部署MongoDB复制集(主从复制、读写分离、高可用)
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,MongoDB 复制集复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余备份并提高了数据的可用性,通过复制集可以对硬件故障和中断的服务进行恢复。Mong
千家信息网最后更新 2025年11月09日部署MongoDB复制集(主从复制、读写分离、高可用)
MongoDB 复制集
复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余备份并提高了数据的可用性,通过复制集可以对硬件故障和中断的服务进行恢复。
MongoDB 复制集工作原理
- mongodb的复制集至少需要两个节点。其中一个是主节点(Primary),负责处理客户端请求,其余的都是从节点(Secondary),负责复制主节点上的数据。
- mongodb各个节点常见的搭配方式为:一主一从、一主多从。主节点记录其上的所有操作到 oplog 中,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
- 客户端在主节点写入数据,在从节点读取数据,主节点与从节点进行数据交互保障数据的一致性。如果其中一个节点出现故障,其他节点马上会将业务接过来而无需停机操作。
MongoDB 复制集的特点及优势
复制集的特点:
- N个节点的群集
- 任何节点都可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复
- 复制集的优势:
- 让数据更安全
- 高数据可用性(24x7)
- 灾难恢复
- 无停机维护(如备份、索引重建、故障转移)
- 读缩放(额外的副本读取)
- 副本集对应用程序是透明的
MongoDB 复制集部署
我们可以在一台服务器上创建多实例,来做复制集
MongoDB安装及创建多实例详解在博文CentOS 7安装MongoDB(最新版4.0)
配置复制集
- 创建4个 MongoDB 实例
# 创建实例的数据目录mkdir -p /data/mongodb/mongodb{1,2,3,4} # 创建实例的日志目录mkdir -p /data/logs # 创建实例的日志文件touch /data/logs/mongodb{1,2,3,4}.log # 赋予日志文件权限 chmod 777 /data/logs/mongodb*.log #创建实例的配置文件存放位置 mkdir -p /data/conf - 创建配置文件,开启复制集功能
这里博主偷了个小懒,将配置文件存放在之前创建的 /data/conf/ 目录下,后面创建的启动脚本为实验机的相对路径# vim /data/conf/mongodb1.conf //简易配置为下, dbpath=/data/mongodb/mongodb1 logpath=/data/logs/mongodb1.log port=27017 replSet=testrc #配置参数值为testrc logappend=true fork=true maxConns=5000 storageEngine=mmapv1需要注意其他三个实例的配置文件中的数据文件存放位置及日志文件和端口要改
- 编写脚本方便对4条实例进行控制(这里用的是相对路径,请根据实际修改)
[root@CentOS7 conf]# cd /usr/local/mongodb/bin[root@CentOS7 bin]# vim mongodb #!/bin/bashINSTANCE=$1ACTION=$2case "$ACTION" in'start')/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;'stop')/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown;;'restart')/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf --shutdown/usr/local/mongodb/bin/mongod -f /data/conf/"$INSTANCE".conf;;esac [root@CentOS7 bin]# chmod +x mongodb[root@CentOS7 bin]# ./mongodb mongodb1 restart[root@CentOS7 bin]# ./mongodb mongodb2 restart[root@CentOS7 bin]# ./mongodb mongodb3 restart[root@CentOS7 bin]# ./mongodb mongodb4 restart[root@CentOS7 bin]# netstat -ntap | grep mongod
- 配置三个节点的复制集
4.1 查看复制集的状态信息mongo #(默认端口:27017)> rs.status()
4.2 定义cfg初始化参数(这里添加三台,剩下的那台实验添加节点功能)> cfg={"_id":"testrc","members":[{"_id":0,"host":"192.168.125.119:27017"},{"_id":1,"host":"192.168.125.119:27018"},{"_id":2,"host":"192.168.125.119:27019"}]}
4.3 启动复制集功能,初始化配置时保证从节点没有数据,保持主从节点数据同步> rs.initiate(cfg) - 添加节点
testrc:PRIMARY> rs.add("192.168.125.119:27020") - 删除节点
testrc:PRIMARY> rs.remove("192.168.125.119:27020")
节点
数据
实例
配置
文件
副本
故障
日志
功能
目录
服务
一致
三个
优势
位置
参数
可用性
备份
客户
客户端
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
方舟服务器管理器最高难度
出版社研制全文数据库
湖北大学数据库实用技术
战地5恶心服务器
数据库连接密码怎么查
ajax 调取数据库
软件开发前景2017
数据库中数据怎么进行大小写切换
汇达软件开发公司
嵌入式软件开发有中年危机么
数据库中什么是事务安全
南京网络技术支持企业
电商平台软件开发怎么样
网络安全事件应急实战演练
南通七和互联网络科技
大学计算机软件开发的论文
腾达建设数据库
eas部署应用服务器管理
东莞送货单软件开发
女生学网络安全有前途吗
用数据库精确查找姓名
5g时代如何保卫网络安全
企业网络安全指标
c 连接服务器
江苏直销软件开发企业
MT数据库笔记本电脑
网络安全工程师操作系统
网络安全发生原因及防范措施
dnf换服务器
怎么计算数据库中的总分数