下面以 Debian 11/12 为例,说明如何配置 MongoDB 副本集(Replica Set)。
假设有 3 台 Debian 服务器:
| 节点 | IP | 主机名 |
|---|---|---|
| Primary | 192.168.1.10 | mongo1 |
| Secondary | 192.168.1.11 | mongo2 |
| Secondary | 192.168.1.12 | mongo3 |
生产环境建议 奇数节点(3 / 5)
sudo apt update
sudo apt install -y curl gnupg
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/debian $(lsb_release -cs)/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org
sudo nano /etc/mongod.conf
关键配置:
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
bindIp至少包含内网 IP,不要用127.0.0.1单独
sudo nano /etc/hosts
192.168.1.10 mongo1
192.168.1.11 mongo2
192.168.1.12 mongo3
sudo systemctl restart mongod
sudo systemctl enable mongod
登录 MongoDB:
mongosh
执行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
})
查看状态:
rs.status()
use test
db.user.insertOne({ name: "tom" })
mongosh --host mongo2
rs.secondaryOk()
use test
db.user.find()
rs.add("mongo4:27017") // 添加节点
rs.remove("mongo3:27017") // 移除节点
rs.status() // 查看状态
rs.conf() // 查看配置
sudo ufw allow 27017
rs.secondaryOk()
后续可配置:
keyFilesecurity.authorization: enabled如果你需要:
可以告诉我,我可以给你专门版本。