当前位置: 首页 > news >正文

MongoDB集群分片安装部署手册

文章目录

    • 一、集群规划
      • 1.1 集群安装规划
      • 1.2 端口规划
      • 1.3 目录创建
    • 二、mongodb安装(三台均需要操作)
      • 2.1 下载、解压
      • 2.2 配置环境变量
    • 三、mongodb组件配置
      • 3.1 配置config server的副本集
        • 3.1.1 config配置文件
        • 3.1.2 config server启动
        • 3.1.3 初始化config
      • 3.2 配置shard1 server的副本集
        • 3.2.1 shard1配置文件
        • 3.2.2 启动shard1
        • 3.2.3 初始化shard1
      • 3.3 配置shard2 server的副本集
        • 3.3.1 shard2配置文件
        • 3.3.2 启动shard2
        • 3.3.3 初始化shard2
      • 3.4 配置shard3 server的副本集
        • 3.4.1 shard3配置文件
        • 3.4.2 启动shard3
        • 3.4.3 初始化shard3
      • 3.5 配置mongos server的副本集
        • 3.5.1 mongos配置文件
        • 3.5.2 启动mongos
      • 3.6 添加分片
      • 3.7 安全验证
        • 3.7.1 生成key文件
        • 3.7.2 创建管理员用户密码
        • 3.7.3 关闭所有的节点
        • 3.7.4 在配置文件后添加key文件
        • 3.7.5 启动所有节点
        • 3.7.6 开启分片
        • 3.7.7 设置chunksize
    • 四、验证
      • 4.1 批量插入数据

一、集群规划

1.1 集群安装规划

在这里插入图片描述

1.2 端口规划

mongos:20000
config:21000
shard1:27001
shard2:27002
shard3:27003

1.3 目录创建

数据目录:
/mongodb/data/config
/mongodb/data/shard1
/mongodb/data/shard2
/mongodb/data/shard3
日志目录:
/mongodb/logs/mongos
/mongodb/logs/config
/mongodb/logs/shard1
/mongodb/logs/shard2
/mongodb/logs/shard3
配置目录:
/usr/local/mongodb/conf
/usr/local/mongodb/server

二、mongodb安装(三台均需要操作)

2.1 下载、解压

https://www.mongodb.com/try/download/community-edition/releases/archive

cd /usr/local/
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.26.tgz

2.2 配置环境变量

vim /etc/profile

#mongodb path
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

source /etc/profile

三、mongodb组件配置

3.1 配置config server的副本集

3.1.1 config配置文件

vim /usr/local/mongodb/conf/config.conf

## content
systemLog:destination: filelogAppend: truepath: /mongodb/logs/config.log# Where and how to store data.
storage:dbPath: /mongodb/data/configjournal:enabled: true# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/config/configsrv.pid# network interfaces
net:port: 21000bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: config        
sharding:clusterRole: configsvr
3.1.2 config server启动

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf &

3.1.3 初始化config

只需要在一台主机上执行

mongo 10.10.3.134:21000config = {_id : "config",members : [{_id : 0, host : "10.10.3.134:21000" },{_id : 1, host : "10.10.3.135:21000" },{_id : 2, host : "10.10.3.136:21000" }]}rs.initiate(config)

在这里插入图片描述
需要关闭防火墙,selinux

3.2 配置shard1 server的副本集

3.2.1 shard1配置文件

vim /usr/local/mongodb/conf/shard1.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard1/shard1.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard1journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard1/shard1.pid# network interfaces
net:port: 27001bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard1
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard1.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard1.conf root@mongo03:/usr/local/mongodb/conf/
3.2.2 启动shard1

三台主机上执行

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf &
3.2.3 初始化shard1

只需要在一台主机上执行

mongo mongo01:27001use adminconfig = { _id : "shard1",members : [{_id : 0, host : "10.10.3.134:27001" ,priority: 2 },{_id : 1, host : "10.10.3.135:27001" ,priority: 1 },{_id : 2, host : "10.10.3.136:27001",arbiterOnly: true}]}

“priority”优先级,数字越大,优先等级越高;“arbiterOnly”仲裁节点:仲裁节点根据优先等级判断哪个节点作为主节点
在这里插入图片描述

3.3 配置shard2 server的副本集

3.3.1 shard2配置文件

vim /usr/local/mongodb/conf/shard2.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard2/shard2.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard2journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard2/shard2.pid# network interfaces
net:port: 27002bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard2
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard2.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard2.conf root@mongo03:/usr/local/mongodb/conf/
3.3.2 启动shard2

三台主机上执行
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf &

3.3.3 初始化shard2

只需要在一台主机上执行

mongo mongo01:27002use adminconfig = { _id : "shard2",members : [{_id : 0, host : "10.10.3.134:27002" ,arbiterOnly: true },{_id : 1, host : "10.10.3.135:27002" ,priority: 2 },{_id : 2, host : "10.10.3.136:27002",priority: 1}]}rs.initiate(config)

在这里插入图片描述

3.4 配置shard3 server的副本集

3.4.1 shard3配置文件

vim /usr/local/mongodb/conf/shard3.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard3/shard3.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard3journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard3/shard3.pid# network interfaces
net:port: 27003bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard3
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard3.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard3.conf root@mongo03:/usr/local/mongodb/conf/
3.4.2 启动shard3

三台主机上执行

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf &
3.4.3 初始化shard3

只需要在一台主机上执行

mongo mongo01:27003use adminconfig = { _id : "shard3",members : [{_id : 0, host : "10.10.3.134:27003" ,priority: 1 },{_id : 1, host : "10.10.3.135:27003" ,arbiterOnly: true },{_id : 2, host : "10.10.3.136:27003",priority: 2}]}rs.initiate(config)

在这里插入图片描述

3.5 配置mongos server的副本集

3.5.1 mongos配置文件

vim /usr/local/mongodb/conf/mongos.conf

systemLog:destination: filelogAppend: truepath: /mongodb/logs/mongos/mongos.log
processManagement:fork: truepidFilePath: /mongodb/logs/mongos/mongos.pid# network interfaces
net:port: 20000bindIp: 0.0.0.0
sharding:configDB: config/10.10.3.134:21000,10.10.3.135:21000,10.10.3.136:21000

同步配置文件

scp /usr/local/mongodb/conf/mongos.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/mongos.conf root@mongo03:/usr/local/mongodb/conf/
3.5.2 启动mongos

三台主机上执行

/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/conf/mongos.conf &

3.6 添加分片

只需要在一台主机上执行

mongo mongo01:20000
sh.addShard("shard1/10.10.3.134:27001,10.10.3.135:27001,10.10.3.136:27001")
sh.addShard("shard2/10.10.3.134:27002,10.10.3.135:27002,10.10.3.136:27002")
sh.addShard("shard3/10.10.3.134:27003,10.10.3.135:27003,10.10.3.136:27003")

在这里插入图片描述
查看分片状态

sh.status()

在这里插入图片描述

3.7 安全验证

3.7.1 生成key文件
openssl rand -base64 756 > /usr/local/mongodb/conf/KeyFile.file

分发key文件

scp /usr/local/mongodb/conf/KeyFile.file root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/KeyFile.file root@mongo03:/usr/local/mongodb/conf/
3.7.2 创建管理员用户密码

只需要在一台主机上执行

mongo -port 20000use admindb.createUser(
{
user:"live",
pwd:"xxxx",
roles:[{role:"root",db:"admin"}]
}
)

在这里插入图片描述

3.7.3 关闭所有的节点

按照先后顺序来处理关闭,mongos>config>shard3>shard2>shard1
三台主机的服务都关闭后再关闭下一个服务。例如三台主机mongos服务都关闭后再关闭config服务,以此类推
关闭mongos

mongo -port 20000use admindb.auth('live','xxxx')db.shutdownServer()

在这里插入图片描述
关闭config

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf --shutdown

关闭shard

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf --shutdown
3.7.4 在配置文件后添加key文件

config.conf、shard1.conf、shard2.conf、shard3.conf最后添加:

security:keyFile: /usr/local/mongodb/conf/KeyFile.fileauthorization: enabled

mongos.conf配置文件中最后添加:

security:
keyFile: /usr/local/mongodb/conf/KeyFile.file

同步配置文件

scp *.conf root@mongo02:/usr/local/mongodb/conf/
scp *.conf root@mongo03:/usr/local/mongodb/conf/
3.7.5 启动所有节点

启动顺序:config>shadr1>shadr2>shadr3>mongos
三台主机的服务都开启后再开启下一个服务。例如三台主机config服务都开启后再开启shard1服务,以此类推

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf &
/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/conf/mongos.conf &
3.7.6 开启分片
mongo 10.10.3.134:20000
use admin
db.auth('live','xxxx')
#为testdb库开启分片功能
db.runCommand( { enablesharding :"testdb"})
#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "testdb.table1",key : {_id: 1} } )

在这里插入图片描述

3.7.7 设置chunksize
use testdb
#设置数据块的大小,超过这个数据块大小(1M)就会分裂,自动均衡迁移到别的分片
db.settings.save({"_id":"chunksize","value":1})
#查看配置
db.settings.find()

在这里插入图片描述

四、验证

4.1 批量插入数据

use testdbfor (var i = 1; i <= 100000; i++){db.table1.insert({"_id":i,"test1":"testval1"+i});}#查看数据分布
db.table1.getShardDistribution()

在这里插入图片描述
等十几分钟后,数据会均匀分配到其他分片
在这里插入图片描述

相关文章:

MongoDB集群分片安装部署手册

文章目录 一、集群规划1.1 集群安装规划1.2 端口规划1.3 目录创建 二、mongodb安装&#xff08;三台均需要操作&#xff09;2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …...

摄像头测距原理

以下是测距摄像头分类的 Markdown 格式输出&#xff0c;方便直接复制使用&#xff1a; 测距摄像头分类 1. 立体视觉&#xff08;Stereo Vision&#xff09;摄像头 原理&#xff1a;模仿人眼成像&#xff0c;利用两台摄像头获取不同视角的图像&#xff0c;通过视差计算场景深…...

基于centos7.9使用shell脚本部署k8s1.25平台

k8s 环境初始化安装Harbor安装k8s安装istio和kubevirt 使用脚本部署k8s1.25版本平台&#xff0c;网络插件使用flannel &#xff0c;容器运行时ctr&#xff0c;部署包括harbor仓库&#xff0c;服务网格、kubevirt服务等 使用的centos7.9资源配置如下&#xff1a; 主机IP资源ma…...

11.29周五F34-Day10打卡

文章目录 1. 问问他能不能来。解析答案:【解析答案分析】【对比分析】【拓展内容】2. 问题是他能不能做。解析答案:【解析答案分析】3. 问题是我们能否联系得上她。(什么关系?动作 or 描述?)解析答案:【解析答案分析】【对比分析】4. 我们在讨论是否要开一个会。解析答案:…...

龙迅#LT8612UX适用于HDMI 转 HDMIVGA应用领域,分辨率高达4K60HZ,内置程序,方便调试!

1. 描述 LT8612UX 是一款 HDMI 转 HDMI&VGA 转换器&#xff0c;可将 HDMI2.0 数据流转换为 HDMI2.0 信号和模拟 RGB 信号。它还输出 8 通道 I2S 和 SPDIF 信号&#xff0c;可实现高质量的 7.1 通道音频。 LT8612UX 使用最新的 ClearEdge 技术&#xff0c;除了原始的 HDMI…...

C#学写了一个程序记录日志的方法(Log类)

1.错误和警告信息单独生产文本进行记录&#xff1b; 2.日志到一定内存阈值可以打包压缩&#xff0c;单独存储起来&#xff0c;修改字段MaxLogFileSizeForCompress的值即可&#xff1b; 3.Log类调用举例&#xff1a;Log.Txt(JB.信息,“日志记录内容”,"通道1"); usi…...

时间相关转换

Timestamp(date,type) { const zeroDate = new Date(date); if(type === startTime){ zeroDate.setHours(0, 0, 0, 0); } if(type === endTime){ zeroDate.setHours(23, 59, 59, 999); } return zeroDate.getTime(); }, //**时间戳转…...

服务器挖矿

文章目录 一、确定挖矿进程并停止二、查找并清除挖矿相关文件三、检查并修复系统漏洞四、加强安全防护 一、确定挖矿进程并停止 查找挖矿进程 在Linux系统中&#xff0c;可以使用命令如top或htop来查看系统资源占用情况。挖矿程序通常会占用大量的CPU或GPU资源。例如&#xff…...

mac maven编译出现问题

背景 进行maven install 命令&#xff0c;报错&#xff1a; [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a J…...

电磁兼容(EMC):磁性材料(永磁、软磁、功能磁)详解

目录 一、磁性材料概述 二、常用磁性材料分类 1. 永磁材料 2. 软磁材料 3. 功能性磁材 三、软磁材料特点 一、磁性材料概述 磁性材料是指由过渡元素铁&#xff08;Fe&#xff09;、钴&#xff08;Co&#xff09;、镍&#xff08;Ni&#xff09;及其合金等组成的能够直接…...

macOS 版本对应的 Xcode 版本,以及 Xcode 历史版本下载

注&#xff1a;当前页面的所有Xcode下载链接均为苹果官方下载链接 &#xff0c;点击将直接转至苹果官网下载。 Xcode版本Xcode发布时间对应macOS版本macOS SDKsiOS SDKswatchOS SDKstvOS SDKs下载Xcode发布日志Xcode 15.413 May 2024macOS 14.014.5 (23F73)17.5 (21F77)10.5 (…...

从语法、功能、社区和使用场景来比较 Sass 和 LESS

一&#xff1a;可以从语法、功能、社区和使用场景来比较 Sass 和 LESS&#xff1a; 1&#xff1a;语法 原始的 Sass 采用的是缩进而不是大括号&#xff0c;后续的 Sass 版本与 LESS 一样使用与 CSS 类似的语法&#xff1a; address {.fa.fa-mobile-phone {margin: 0 3px 0 2…...

springboot-vue excel上传导出

数据库 device_manage表 字段&#xff0c;id&#xff0c;workshop,device_number,device_name,device_model,warn_time,expired_time device_warn表 字段&#xff0c;id,warn_time,expired_time 后端 实体类格式 device_manage Data TableName("device_manage"…...

CTF-PWN: ret2libc

plt表与got表是什么? PLT PLT (Procedure Linkage Table) 表在 ELF 文件中的代码段(.text)中,它看起来是这样的: .plt:0x00400530 <__libc_start_mainplt>:jmp QWORD PTR [rip 0x200602] # 0x601608 <__libc_start_maingot.plt>push 0x0jmp 0x4005100…...

SickOs: 1.1靶场学习小记

学习环境 kali攻击机&#xff1a;Get Kali | Kali Linux vulnhub靶场&#xff1a;https://download.vulnhub.com/sickos/sick0s1.1.7z 靶场描述&#xff1a; 这次夺旗赛清晰地模拟了在安全环境下如何对网络实施黑客策略从而入侵网络的过程。这个虚拟机与我在进攻性安全认证专…...

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1&#xff1a;使用“空间连接 (Spatial Join)”工具方法 2&#xff1a;使用“点计数 (Point Count)”工具方法 3&#xff1a;通过“选择 (Select by Location)”统计方法 4&#xff1a;通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…...

JavaScript中类数组对象及其与数组的关系

JavaScript中类数组对象及其与数组的关系 1. 什么是类数组对象&#xff1f; 类数组对象是指那些具有 length 属性且可以通过非负整数索引访问元素的对象。虽然这些对象看起来像数组&#xff0c;但它们并不具备真正数组的所有特性&#xff0c;例如没有继承 Array.prototype 上…...

基础入门-Web应用架构搭建域名源码站库分离MVC模型解析受限对应路径

知识点&#xff1a; 1、基础入门-Web应用-域名上的技术要点 2、基础入门-Web应用-源码上的技术要点 3、基础入门-Web应用-数据上的技术要点 4、基础入门-Web应用-解析上的技术要点 5、基础入门-Web应用-平台上的技术要点 一、演示案例-域名差异-主站&分站&端口站&…...

C#:时间与时间戳的转换

1、将 DateTime 转换为 Unix 时间戳&#xff08;秒&#xff09; public static long DateTimeToUnixTimestamp(DateTime dateTime) {// 定义UTC纪元时间DateTime epochStart new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);// 计算从UTC纪元时间到指定时间的总秒数Tim…...

QT的exec函数

在Qt框架中&#xff0c;exec()方法是QDialog类&#xff08;及其子类&#xff09;的一个成员函数&#xff0c;用于以模态&#xff08;modal&#xff09;方式显示对话框。当exec()被调用时&#xff0c;它会启动一个局部的事件循环&#xff0c;这个循环会阻塞对对话框之外的其他窗…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集

目录 一、引言&#xff1a;当爬虫遭遇"地域封锁"二、背景解析&#xff1a;分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计&#xff1a;Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...