在 Debian 上配置 MongoDB 的“主从”,需要注意一个概念问题:
下面我以 Debian 11/12 + MongoDB 6.x/7.x 为例,教你配置 一主一从的副本集。
假设两台机器:
| 角色 | IP | hostname |
|---|---|---|
| Primary | 192.168.1.10 | mongo1 |
| Secondary | 192.168.1.11 | mongo2 |
如果是单机测试,也可以用不同端口模拟
sudo apt update
sudo apt install -y mongodb-org
启动服务:
sudo systemctl enable mongod
sudo systemctl start mongod
在两台机器上:
sudo vim /etc/hosts
添加:
192.168.1.10 mongo1
192.168.1.11 mongo2
编辑配置文件:
sudo vim /etc/mongod.conf
net:
bindIp: 0.0.0.0
replication:
replSetName: rs0
sudo systemctl restart mongod
连接 mongo:
mongosh
执行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" }
]
})
查看状态:
rs.status()
看到:
PRIMARYSECONDARY说明主从配置成功 ✅
use test
db.user.insert({name:"tom"})
rs.secondaryOk()
use test
db.user.find()
能查到说明同步正常 ✅
如果你必须用老的主从模式(不建议):
master: true # 主
slave: true # 从
source: mongo1
⚠️ 注意:
正常,Secondary 默认只读
确保 27017 端口互通:
sudo ufw allow 27017
生产环境务必加:
security:
authorization: enabled
✅ 推荐方案:Replica Set(副本集)
✅ 主节点:Primary
✅ 从节点:Secondary
❌ 不推荐:老式 master/slave
如果你愿意,我可以:
你现在是 生产环境还是测试?