下面给你一个**在 CentOS 上搭建 MongoDB 副本集(最常用、最推荐的集群方式)**的完整思路与示例。
如果你是想要 分片集群(Sharding),我也可以再单独说。
假设 3 台 CentOS 7/8 服务器:
| 节点 | IP | 角色 |
|---|---|---|
| node1 | 192.168.1.101 | Primary |
| node2 | 192.168.1.102 | Secondary |
| node3 | 192.168.1.103 | Secondary(可投仲裁) |
MongoDB 版本示例:6.0 / 7.0(步骤通用)
cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF
CentOS 7 改成
redhat/7
yum install -y mongodb-org
mkdir -p /data/mongodb
chown -R mongod:mongod /data/mongodb
编辑配置文件 /etc/mongod.conf
storage:
dbPath: /data/mongodb
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
net:
bindIp: 0.0.0.0
port: 27017
replication:
replSetName: rs0
启动服务:
systemctl enable mongod
systemctl start mongod
进入 mongo shell:
mongosh
执行:
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"})
在从节点查看(需先执行):
rs.secondaryOk()
db.user.find()
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
yum install -y chrony
systemctl enable chronyd
rs.addArb("192.168.1.104:27017")
结构会是:
可以告诉我:
我可以直接给你分片集群完整部署方案。