温馨提示×

ubuntu怎么配置mongodb副本集

小樊
39
2026-09-20 01:50:02
栏目: 云计算

下面以 Ubuntu 22.04 / 20.04 为例,说明如何配置 MongoDB 副本集(Replica Set)
示例为 3 节点副本集(1 主 2 从),你也可以在一台机器上用不同端口模拟。


一、环境准备

假设 3 台服务器(或同一台 3 个端口):

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

如果是单机测试:

  • 27017 / 27018 / 27019

二、安装 MongoDB(所有节点)

sudo apt update
sudo apt install -y mongodb-org

启动并设置开机自启:

sudo systemctl enable mongod
sudo systemctl start mongod

三、修改 MongoDB 配置

编辑配置文件:

sudo vim /etc/mongod.conf

关键配置(所有节点)

net:
  port: 27017
  bindIp: 0.0.0.0   # 生产建议写具体IP

replication:
  replSetName: rs0

rs0 是副本集名称,三台必须一致

重启 MongoDB:

sudo systemctl restart mongod

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

连接 MongoDB:

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

五、验证副本集

查看主节点

rs.isMaster()

测试数据同步

在 PRIMARY 节点:

use test
db.demo.insert({name:"mongo"})

在 SECONDARY 节点:

rs.secondaryOk()   # 旧版本为 rs.slaveOk()
use test
db.demo.find()

六、常见配置补充

1️⃣ 仲裁节点(可选)

rs.addArb("192.168.1.104:27017")

2️⃣ 优先级设置

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

3️⃣ 防火墙(重要)

sudo ufw allow 27017

七、单机多实例示例(测试用)

mongod --port 27018 --dbpath /data/db2 --replSet rs0 --fork --logpath /var/log/mongo2.log
mongod --port 27019 --dbpath /data/db3 --replSet rs0 --fork --logpath /var/log/mongo3.log

八、常见问题

Not primary
→ 写操作必须在 PRIMARY 节点

❌ 节点一直 STARTUP
→ 检查防火墙、bindIp、hosts 配置

❌ 无法连接
→ 确认 bindIp 不是 127.0.0.1


如果你需要:

  • Docker 部署副本集
  • MongoDB 鉴权 + 副本集
  • 生产级配置(TLS / 用户权限)

可以继续问我。

0