温馨提示×

linux mongodb配置怎样配置副本集

小樊
40
2026-10-28 05:06:50
栏目: 云计算

下面给你一份 Linux 下 MongoDB 副本集(Replica Set)配置 的完整示例,从单机多实例到多机都可以参考。


一、环境准备

假设:

  • 操作系统:Linux(CentOS / Ubuntu 均可)
  • MongoDB 版本:5.x / 6.x
  • 3 个节点(生产推荐奇数节点)

示例节点:

192.168.1.10  (node1)
192.168.1.11  (node2)
192.168.1.12  (node3)

二、安装 MongoDB(所有节点)

以 CentOS 为例:

sudo yum install -y mongodb-org

或 Ubuntu:

sudo apt install -y mongodb-org

启动服务:

sudo systemctl start mongod
sudo systemctl enable mongod

三、修改配置文件(重点)

MongoDB 配置文件一般在:

/etc/mongod.conf

1️⃣ 基础配置(所有节点)

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true

net:
  bindIp: 0.0.0.0
  port: 27017

processManagement:
  fork: true

2️⃣ 配置副本集(关键)

在 每个节点 的 mongod.conf 中添加:

replication:
  replSetName: rs0

rs0 是副本集名称,所有节点必须一致

修改后重启:

sudo systemctl restart mongod

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

连接 MongoDB:

mongo

执行初始化命令:

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

测试数据同步

在 PRIMARY 写数据:

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

在 SECONDARY 读(需先开启):

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

六、常见补充配置

1️⃣ 仲裁节点(可选)

rs.addArb("192.168.1.13:27017")

2️⃣ 优先级设置

cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfig(cfg)

3️⃣ 防火墙(必须)

firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload

七、单机多实例副本集(测试用)

如果你只有一台 Linux 机器:

mongod --port 27017 --dbpath /data/rs1 --replSet rs0
mongod --port 27018 --dbpath /data/rs2 --replSet rs0
mongod --port 27019 --dbpath /data/rs3 --replSet rs0

然后 rs.initiate() 即可。


八、常见问题

❌ Not primary
→ 写操作必须在 PRIMARY

❌ 节点一直 STARTUP
→ 检查 bindIp、防火墙、hosts 解析

❌ SECONDARY 不能读
→ 执行 rs.secondaryOk()


如果你需要:

  • Docker 版 MongoDB 副本集
  • 鉴权 + 副本集
  • 云服务器公网部署

告诉我你的使用场景,我可以给你更针对性的配置。

0 踩