温馨提示×

centos mongodb怎样配置副本集

小樊
37
2026-10-20 10:05:35
栏目: 云计算

下面以 CentOS 7/8 为例,说明如何配置 MongoDB 副本集(Replica Set)。假设你有 3 台服务器(或同一台机器不同端口也行,仅用于测试)。


一、环境准备

1. 服务器规划(示例)

节点 IP 端口
node1 192.168.1.101 27017
node2 192.168.1.102 27017
node3 192.168.1.103 27017

生产环境建议 奇数节点(3 / 5)


二、安装 MongoDB(所有节点)

CentOS 7 示例

cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org]
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

yum install -y mongodb-org

启动 MongoDB:

systemctl enable mongod
systemctl start mongod

三、配置 MongoDB 副本集

1. 修改配置文件(所有节点)

编辑 /etc/mongod.conf

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

bindIp 生产环境建议写成具体 IP

重启:

systemctl restart mongod

四、初始化副本集(只需在任一节点执行)

登录 MongoDB

mongo

初始化副本集

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()

六、常用管理命令

rs.isMaster()
rs.add("192.168.1.104:27017")
rs.remove("192.168.1.104:27017")
rs.conf()

七、防火墙(CentOS)

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

八、常见问题

1. 节点无法加入

  • 时间不同步(用 NTP)
  • 防火墙未开放
  • hostname / IP 配置错误

2. 仲裁节点(可选)

rs.addArb("192.168.1.104:27017")

如果你需要:

  • ✅ 单机多实例副本集
  • ✅ 带鉴权(账号密码)
  • ✅ Docker 部署

可以告诉我,我给你对应方案。

0 踩