在 Ubuntu 上配置 MongoDB 的“主从”(官方称为 Replica Set,副本集)是推荐方式(MongoDB 已不推荐使用老式 master-slave)。下面按 副本集方式 给你一个完整、可操作的步骤。
假设有 3 台 Ubuntu 服务器(最少 3 台,1 主 2 从):
| 角色 | IP |
|---|---|
| primary | 192.168.1.10 |
| secondary | 192.168.1.11 |
| secondary | 192.168.1.12 |
MongoDB 版本:6.x / 7.x
sudo apt update
sudo apt install -y mongodb-org
启动并设置开机自启:
sudo systemctl enable mongod
sudo systemctl start mongod
编辑配置文件:
sudo nano /etc/mongod.conf
net:
bindIp: 0.0.0.0
(生产建议只绑内网 IP)
replication:
replSetName: rs0
保存后重启:
sudo systemctl restart mongod
sudo ufw allow 27017
登录 MongoDB:
mongosh
执行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.10:27017" },
{ _id: 1, host: "192.168.1.11:27017" },
{ _id: 2, host: "192.168.1.12:27017" }
]
})
查看状态:
rs.status()
在主节点:
rs.isMaster()
在从节点(默认不能读):
rs.secondaryOk()
db.test.find()
rs.secondaryOk()
cfg = rs.conf()
cfg.members[1].priority = 0.5
rs.reconfigure(cfg)
{ _id: 3, host: "192.168.1.13:27017", arbiterOnly: true }
如果你只是想简单主从同步(不推荐):
master = true # 主
slave = true # 从
source = 192.168.1.10
⚠️ MongoDB 官方已废弃
bindIp 和防火墙如果你告诉我:
我可以给你 更精确的配置 或 docker 版本。