温馨提示×

centos mongodb如何设副本

小樊
37
2026-09-08 21:50:37
栏目: 云计算

在 CentOS 上部署 MongoDB 副本集(Replica Set) 一般分为以下几个步骤。下面以 3 节点副本集 为例(最常见、生产推荐)。


一、环境准备

假设有 3 台 CentOS 服务器:

节点 IP 角色
node1 192.168.1.101 primary
node2 192.168.1.102 secondary
node3 192.168.1.103 secondary

如果是单机测试,也可以用不同端口(27017 / 27018 / 27019)


二、安装 MongoDB(三台都做)

1. 添加 MongoDB YUM 源

cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF

2. 安装

yum install -y mongodb-org

三、配置 MongoDB 副本集

1. 修改配置文件

编辑 /etc/mongod.conf

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

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

net:
  bindIp: 0.0.0.0
  port: 27017

replication:
  replSetName: rs0

replSetName 三台必须一致


2. 启动 MongoDB

systemctl enable mongod
systemctl start mongod

四、初始化副本集(只需在一台执行)

登录 MongoDB:

mongo

执行初始化命令:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.1.101:27017" },
    { _id: 1, host: "192.168.1.102:27017" },
    { _id: 2, host: "192.168.1.103:27017" }
  ]
})

查看状态:

rs.status()

五、验证副本集

主节点写入

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

从节点读取

mongo --host 192.168.1.102
rs.slaveOk()
use test
db.user.find()

六、常见配置补充

1. 优先级设置(指定主节点)

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

2. 仲裁节点(可选)

rs.addArb("192.168.1.104:27017")

3. 防火墙

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

七、常见问题

  • rs.status() 显示 not reachable
    → 检查防火墙、bindIp、hosts 解析

  • 只显示一台节点
    → 初始化时 member host 写错

  • 从节点不能读
    → 需要 rs.slaveOk()


如果你需要:

  • ✅ 单机多实例副本集
  • ✅ 带认证(用户名密码)
  • ✅ Docker 方式
  • ✅ CentOS 8 / Rocky / Alma

告诉我你的实际环境,我可以直接给你可用配置。

0