下面以 CentOS 7/8 为例,说明如何安装并配置 MongoDB 副本集(Replica Set)。
假设有 3 台 CentOS 服务器(生产推荐奇数节点):
| 节点 | IP | 角色 |
|---|---|---|
| node1 | 192.168.1.101 | PRIMARY |
| node2 | 192.168.1.102 | SECONDARY |
| node3 | 192.168.1.103 | SECONDARY |
如果是测试,也可以在单机用不同端口模拟。
cat > /etc/yum.repos.d/mongodb-org.repo <<EOF
[mongodb-org-6.0]
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
systemctl enable mongod
systemctl start mongod
编辑 /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
replSetName三台必须一致
重启:
systemctl restart mongod
连接到任意一台:
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() // 旧版本
// 或
rs.secondaryOk() // 新版本
db.user.find()
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
yum install -y ntp
systemctl enable ntpd
systemctl start ntpd
rs.isMaster()
rs.add("ip:27017")rs.remove("ip:27017")rs.addArb("ip:27017")如果你需要 单机多实例副本集 或 Docker 方式部署,也可以告诉我。