在 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)
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
yum install -y mongodb-org
编辑 /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三台必须一致
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()
cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfigure(cfg)
rs.addArb("192.168.1.104:27017")
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
rs.status() 显示 not reachable
→ 检查防火墙、bindIp、hosts 解析
只显示一台节点
→ 初始化时 member host 写错
从节点不能读
→ 需要 rs.slaveOk()
如果你需要:
告诉我你的实际环境,我可以直接给你可用配置。