温馨提示×

debian mongodb怎样配主从

小樊
46
2026-09-14 13:51:29
栏目: 云计算

Debian 上配置 MongoDB 的“主从”,需要注意一个概念问题:

  • MongoDB 3.0 之后已经废弃了传统的 Master–Slave(主从)模式
  • 现在官方推荐使用的是 Replica Set(副本集),它包含:
    • 1 个 Primary(主)
    • 1 个或多个 Secondary(从)

下面我以 Debian 11/12 + MongoDB 6.x/7.x 为例,教你配置 一主一从的副本集


一、环境准备

假设两台机器:

角色 IP hostname
Primary 192.168.1.10 mongo1
Secondary 192.168.1.11 mongo2

如果是单机测试,也可以用不同端口模拟


二、安装 MongoDB(两台都要)

sudo apt update
sudo apt install -y mongodb-org

启动服务:

sudo systemctl enable mongod
sudo systemctl start mongod

三、配置 hosts(可选但推荐)

在两台机器上:

sudo vim /etc/hosts

添加:

192.168.1.10 mongo1
192.168.1.11 mongo2

四、修改 MongoDB 配置(关键)

编辑配置文件:

sudo vim /etc/mongod.conf

1️⃣ 修改 bindIp

net:
  bindIp: 0.0.0.0

2️⃣ 启用副本集

replication:
  replSetName: rs0

3️⃣ 重启 MongoDB

sudo systemctl restart mongod

五、初始化副本集(只在 Primary 上执行)

连接 mongo:

mongosh

执行:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo1:27017" },
    { _id: 1, host: "mongo2:27017" }
  ]
})

查看状态:

rs.status()

看到:

  • PRIMARY
  • SECONDARY

说明主从配置成功 ✅


六、验证主从同步

在主节点插入数据:

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

在从节点查看:

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

能查到说明同步正常 ✅


七、传统 Master-Slave(不推荐 ❌)

如果你必须用老的主从模式(不建议):

master: true     # 主
slave: true      # 从
source: mongo1

⚠️ 注意:

  • MongoDB 3.0+ 已废弃
  • 很多新版本直接不支持

八、常见问题

1️⃣ 从节点不能写

正常,Secondary 默认只读

2️⃣ 防火墙

确保 27017 端口互通:

sudo ufw allow 27017

3️⃣ 认证问题

生产环境务必加:

security:
  authorization: enabled

九、总结

✅ 推荐方案:Replica Set(副本集)
✅ 主节点:Primary
✅ 从节点:Secondary
❌ 不推荐:老式 master/slave

如果你愿意,我可以:

  • 帮你写 systemd 自动重启
  • 帮你配 带账号认证的副本集
  • 或给你 docker-compose 版 MongoDB 主从

你现在是 生产环境还是测试?

0