下面以 CentOS 7/8 为例,说明 MongoDB 副本集(Replica Set) 的搭建步骤。假设你有 3 台服务器(生产推荐奇数节点)。
假设三台机器:
| 主机名 | IP | 角色 |
|---|---|---|
| mongo1 | 192.168.1.11 | primary/secondary |
| mongo2 | 192.168.1.12 | secondary |
| mongo3 | 192.168.1.13 | 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
编辑 /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
mongo
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.11:27017" },
{ _id: 1, host: "192.168.1.12:27017" },
{ _id: 2, host: "192.168.1.13:27017" }
]
})
rs.status()
看到 PRIMARY 和 SECONDARY 即成功。
rs.add("192.168.1.14:27017")
rs.remove("192.168.1.14:27017")
cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfig(cfg)
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
主节点:
use test
db.test.insert({a:1})
从节点:
rs.slaveOk()
use test
db.test.find()
如果你只有一台 CentOS,可以用:
dbPath 和配置文件需要我给你 单机多实例副本集示例 或 带鉴权的副本集配置 吗?