温馨提示×

ubuntu mongodb怎么配置主从

小樊
44
2026-10-01 19:53:27
栏目: 云计算

在 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


二、安装 MongoDB(所有节点)

sudo apt update
sudo apt install -y mongodb-org

启动并设置开机自启:

sudo systemctl enable mongod
sudo systemctl start mongod

三、修改 MongoDB 配置(所有节点)

编辑配置文件:

sudo nano /etc/mongod.conf

1️⃣ 绑定 IP

net:
  bindIp: 0.0.0.0

(生产建议只绑内网 IP)

2️⃣ 启用副本集

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

七、常见配置说明

1️⃣ 从节点可读

rs.secondaryOk()

2️⃣ 优先级控制(谁更容易当主)

cfg = rs.conf()
cfg.members[1].priority = 0.5
rs.reconfigure(cfg)

3️⃣ 仲裁节点(可选)

{ _id: 3, host: "192.168.1.13:27017", arbiterOnly: true }

八、老式 master-slave(不推荐)

如果你只是想简单主从同步(不推荐):

master = true   # 主
slave = true   # 从
source = 192.168.1.10

⚠️ MongoDB 官方已废弃


九、常见问题

  • 不能连接:检查 bindIp 和防火墙
  • 副本集起不来:检查主机名能否解析
  • 从节点不可写:副本集从节点默认只读

如果你告诉我:

  • Ubuntu 版本
  • MongoDB 版本
  • 单机还是多机

我可以给你 更精确的配置 或 docker 版本。

0 踩