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安装(三台均需要操作)2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …...
摄像头测距原理
以下是测距摄像头分类的 Markdown 格式输出,方便直接复制使用: 测距摄像头分类 1. 立体视觉(Stereo Vision)摄像头 原理:模仿人眼成像,利用两台摄像头获取不同视角的图像,通过视差计算场景深…...
基于centos7.9使用shell脚本部署k8s1.25平台
k8s 环境初始化安装Harbor安装k8s安装istio和kubevirt 使用脚本部署k8s1.25版本平台,网络插件使用flannel ,容器运行时ctr,部署包括harbor仓库,服务网格、kubevirt服务等 使用的centos7.9资源配置如下: 主机IP资源ma…...
11.29周五F34-Day10打卡
文章目录 1. 问问他能不能来。解析答案:【解析答案分析】【对比分析】【拓展内容】2. 问题是他能不能做。解析答案:【解析答案分析】3. 问题是我们能否联系得上她。(什么关系?动作 or 描述?)解析答案:【解析答案分析】【对比分析】4. 我们在讨论是否要开一个会。解析答案:…...

龙迅#LT8612UX适用于HDMI 转 HDMIVGA应用领域,分辨率高达4K60HZ,内置程序,方便调试!
1. 描述 LT8612UX 是一款 HDMI 转 HDMI&VGA 转换器,可将 HDMI2.0 数据流转换为 HDMI2.0 信号和模拟 RGB 信号。它还输出 8 通道 I2S 和 SPDIF 信号,可实现高质量的 7.1 通道音频。 LT8612UX 使用最新的 ClearEdge 技术,除了原始的 HDMI…...

C#学写了一个程序记录日志的方法(Log类)
1.错误和警告信息单独生产文本进行记录; 2.日志到一定内存阈值可以打包压缩,单独存储起来,修改字段MaxLogFileSizeForCompress的值即可; 3.Log类调用举例: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系统中,可以使用命令如top或htop来查看系统资源占用情况。挖矿程序通常会占用大量的CPU或GPU资源。例如ÿ…...
mac maven编译出现问题
背景 进行maven install 命令,报错: [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. 功能性磁材 三、软磁材料特点 一、磁性材料概述 磁性材料是指由过渡元素铁(Fe)、钴(Co)、镍(Ni)及其合金等组成的能够直接…...
macOS 版本对应的 Xcode 版本,以及 Xcode 历史版本下载
注:当前页面的所有Xcode下载链接均为苹果官方下载链接 ,点击将直接转至苹果官网下载。 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
一:可以从语法、功能、社区和使用场景来比较 Sass 和 LESS: 1:语法 原始的 Sass 采用的是缩进而不是大括号,后续的 Sass 版本与 LESS 一样使用与 CSS 类似的语法: address {.fa.fa-mobile-phone {margin: 0 3px 0 2…...

springboot-vue excel上传导出
数据库 device_manage表 字段,id,workshop,device_number,device_name,device_model,warn_time,expired_time device_warn表 字段,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攻击机:Get Kali | Kali Linux vulnhub靶场:https://download.vulnhub.com/sickos/sick0s1.1.7z 靶场描述: 这次夺旗赛清晰地模拟了在安全环境下如何对网络实施黑客策略从而入侵网络的过程。这个虚拟机与我在进攻性安全认证专…...

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数
统计某个shp文件中不同区域内的站点数 方法 1:使用“空间连接 (Spatial Join)”工具方法 2:使用“点计数 (Point Count)”工具方法 3:通过“选择 (Select by Location)”统计方法 4:通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…...
JavaScript中类数组对象及其与数组的关系
JavaScript中类数组对象及其与数组的关系 1. 什么是类数组对象? 类数组对象是指那些具有 length 属性且可以通过非负整数索引访问元素的对象。虽然这些对象看起来像数组,但它们并不具备真正数组的所有特性,例如没有继承 Array.prototype 上…...

基础入门-Web应用架构搭建域名源码站库分离MVC模型解析受限对应路径
知识点: 1、基础入门-Web应用-域名上的技术要点 2、基础入门-Web应用-源码上的技术要点 3、基础入门-Web应用-数据上的技术要点 4、基础入门-Web应用-解析上的技术要点 5、基础入门-Web应用-平台上的技术要点 一、演示案例-域名差异-主站&分站&端口站&…...
C#:时间与时间戳的转换
1、将 DateTime 转换为 Unix 时间戳(秒) public static long DateTimeToUnixTimestamp(DateTime dateTime) {// 定义UTC纪元时间DateTime epochStart new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);// 计算从UTC纪元时间到指定时间的总秒数Tim…...
QT的exec函数
在Qt框架中,exec()方法是QDialog类(及其子类)的一个成员函数,用于以模态(modal)方式显示对话框。当exec()被调用时,它会启动一个局部的事件循环,这个循环会阻塞对对话框之外的其他窗…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...