在 Debian 上配置 MongoDB 副本集(Replica Set) 一般分为以下几个步骤。下面以 **MongoDB 6.x / 7.x(官方 APT 仓库)**为例,假设你有三台服务器(也可以在一台机器上用不同端口测试)。
| 主机名 | IP | 端口 |
|---|---|---|
| mongo1 | 192.168.1.10 | 27017 |
| mongo2 | 192.168.1.11 | 27017 |
| mongo3 | 192.168.1.12 | 27017 |
若单机测试,可分别使用
27017 / 27018 / 27019
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y mongodb-org
编辑 /etc/mongod.conf:
# /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0 # 生产环境建议指定 IP
storage:
dbPath: /var/lib/mongodb
replication:
replSetName: rs0 # 副本集名称,所有节点必须一致
若单机多实例,需修改
dbPath和port
sudo systemctl restart mongod
sudo systemctl enable mongod
mongosh
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "192.168.1.10:27017" },
{ _id: 1, host: "192.168.1.11:27017" },
{ _id: 2, host: "192.168.1.12:27017" }
]
})
rs.status()
rs.isMaster()
主节点:
use testdb
db.test.insertOne({ msg: "hello replica set" })
从节点:
rs.secondaryOk()
use testdb
db.test.find()
rs.addArb("192.168.1.13:27017")
cfg = rs.conf()
cfg.members[0].priority = 2
rs.reconfig(cfg)
rs.conf()
rs.status()
rs.add("host:port")
rs.remove("host:port")
27017bindIp 不能是 127.0.0.1rs.secondaryOk()
如果你愿意,我可以帮你:
rs.status() 错误直接贴你的 mongod.conf 或报错即可。