千家信息网

MongoDB 主从复制集搭建

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,一、Mongodb复制集简介什么是复制集?复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行
千家信息网最后更新 2026年11月03日MongoDB 主从复制集搭建

一、Mongodb复制集简介

什么是复制集?

复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。

MongoDB复制集原理:

mongodb的复制集至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

mongodb各个节点常见的搭配方式为:一主一从、一主多从。

主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

MongoDB复制结构图如下所示:

以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时, 主节点与从节点进行数据交互保障数据的一致性。

复制集的优势:

让数据更安全
搞数据可用性
灾难恢复
无停机维护(如备份,重建索引,故障转移)
读缩放(额外的副本读取)
副本集对应用程序是透明的

复制集的特点:

N个几点的群集
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复

主从切换:

1.手动切换:主动放弃primary,其余从服务器会选举出主服务器
2.自动切换:关闭MongoDB服务,其余从服务器会选举出主服务器


二、实验环境:

1.安装MongoDB链接:Centos 7 超简单yum源安装MongoDB

2.因为是实验,所以在一台Centos 7虚拟机的MongoDB服务器进行配置复制集,IP:192.168.233.6

3.添加配置开启4个实例,端口号分别为:

1)27017
2)27018
3)27019
4)27020

4.实验操作:4个实例 开启三个 1主2个从 额外添加复制集追加实例27020 节点 撤销实例27020节点


三、操作步骤

1.安装MongoDB完成后,默认端口号是27017

额外添加3个实例

首先需要创建三个数据存储目录,三个日志文件

mkdir -p /data/mongodb/mongodb{2,3,4} #创建3个数据文件目录
mkdir -p /data/mongodb/logs #创建日志文件目录
touch /data/mongodb/logs/mongodb{2,3,4}.log #创建3个日志文件
chmod 777 /data/mongodb/logs/*.log #修改日志文件的权限,能写能读,最大权限

2.修改 27017端口默认MongoDB的配置文件,开启复制集

vim /etc/mongod.conf

3.因为修改过配置文件所以需要关闭并重新开启MongoDB

mongod -f /etc/mongod.conf --shutdown #关闭MongoDB

mongod -f /etc/mongod.conf #开启MongoDB

4.复制并生成3个节点配置文件,进行修改

[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod4.conf


5.需要修改每一个节点的配置文件

[root@localhost logs]# vim /etc/mongod2.conf

# vim /etc/mongod2.conf

.......

path: /data/mongodb/logs/mongodb2.log //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb2 //每个实例指定自己的数据目录

port: 27018 //指定端口分别为27018、 27019 、 27020

.......

replication: //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang


[root@localhost logs]# vim /etc/mongod3.conf

# vim /etc/mongod3.conf

.......

path: /data/mongodb/logs/mongodb3.log //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb3 //每个实例指定自己的数据目录

port: 27019 //指定端口分别为27018、 27019 、 27020

.......

replication: //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang


[root@localhost logs]# vim /etc/mongod4.conf

# vim /etc/mongod4.conf

.......

path: /data/mongodb/logs/mongodb4.log //每个实例指定自己日志目录

.......

dbPath: /data/mongodb/mongodb4 //每个实例指定自己的数据目录

port: 27020 //指定端口分别为27018、 27019 、 27020

.......

replication: //开启所有实例的复制参数:定义一个 replSetName: yang

replSetName: yang


6.设置配置以上步骤修改完成mongo2 mongo3 mongo4后,开启服务

[root@localhost logs]# mongod -f /etc/mongod2.conf


[root@localhost logs]# mongod -f /etc/mongod3.conf


[root@localhost logs]# mongod -f /etc/mongod4.conf

#查看下四个端口的MongoDB开启

[root@localhost logs]# netstat -natp | grep mongo

7.配置三个节点的复制集

#首先进入默认MongoDB数据库中

mongo

#创建三个节点复制集

cfg={"_id":"yang","members":[{"_id":0,"host":"192.168.233.6:27017"},{"_id":1,"host":"192.168.233.6:27018"},{"_id":2,"host":"192.168.233.6:27019"}]}

#初始化配置时保证从节点没有数据

rs.initiate(cfg)

rs.status() #查看复制集的状态

主节点:27017端口

从节点:27018端口

从节点:27019端口

#因为之前只是创建了三个节点的复制集,现在演示添加27020端口的节点

#首先需要进入主节点PRIMARY 27017


#添加节点 ,在主节点上才能进行操作 primary

rs.add("192.168.233.6:27020")

rs.status() #查看复制集的状态

#既然能添加节点,就能删除节点:
#删除节点 ,在主节点上才能进行操作 primary

rs.remove("192.168.233.6:27020")


节点 数据 实例 文件 目录 端口 服务 配置 日志 三个 服务器 副本 别为 参数 客户 客户端 故障 切换 实验 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中智农互联网科技 互联网科技行业发展 互联网公司 科技公司 奇酷互联网科技公司 世界互联网领先科技成果 远拓互联网科技 无线互联网科技 融贸通互联网科技 四川狮子座互联网科技 多迪互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 成都铂石互联网科技做什么的 昭通互联网科技选哪家 宜昌元轩互联网科技有限公司 用友工业互联网科技发展 南博望互联网科技有限公司 电子商务与互联网科技的关系 广州有谷有贝互联网科技有限公司 科技信息时代互联网发展 东风日产互联网科技公司叫什么 互联网和科技创新 互联网科技垄断 嘟嘟瓜互联网科技 西安互联网科技公司 一五八零互联网科技 昭通云南众福互联网科技有限公司 汽车互联网创新科技园 长沙茂晟互联网科技有限公司 互联网金融运营模式中的金融科技 北京军民互联网科技公司
0