温馨提示×

centos mongodb怎么配置副本集

小樊
34
2026-09-18 00:50:13
栏目: 云计算

下面以 CentOS 7/8 为例,说明如何配置 MongoDB 副本集(Replica Set)。示例以 3 节点 为例(生产推荐奇数节点)。


一、环境准备

假设三台服务器:

节点 IP 角色
node1 192.168.1.101 PRIMARY
node2 192.168.1.102 SECONDARY
node3 192.168.1.103 SECONDARY

如果是单机测试,也可以使用不同端口(如 27017 / 27018 / 27019)


二、安装 MongoDB(三台都要)

1. 添加 MongoDB yum 源

cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF

2. 安装

yum install -y mongodb-org

三、配置 MongoDB(三台)

编辑配置文件:

vi /etc/mongod.conf

关键配置

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

replSetName 三台必须一致

启动 MongoDB

systemctl enable mongod
systemctl start mongod

四、配置防火墙(如开启)

firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload

五、初始化副本集(只需在一台执行)

进入 mongo shell:

mongosh

执行:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.1.101:27017" },
    { _id: 1, host: "192.168.1.102:27017" },
    { _id: 2, host: "192.168.1.103:27017" }
  ]
})

查看状态:

rs.status()

六、验证副本集

主节点写入

use test
db.user.insert({name:"tom"})

从节点读取(需先执行)

rs.secondaryOk()
db.user.find()

七、常见问题

1. 节点无法加入

  • 检查 bindIp
  • 检查防火墙
  • 检查 hostname 解析

2. 单机多实例

mongod --port 27018 --dbpath /data2 --replSet rs0

3. 添加节点

rs.add("192.168.1.104:27017")

如果你需要:

  • 单机多副本集配置
  • 带鉴权(用户密码)
  • Docker 方式
  • MongoDB 7 / 旧版本

可以告诉我你的具体环境。

0