下面以 Debian(11/12 均可) 为例,手把手说明 MongoDB 副本集(Replica Set) 的搭建步骤。假设你有 3 台 Debian 服务器(最少 3 台才能保证自动选主)。
假设:
mongo1:192.168.1.11mongo2:192.168.1.12mongo3:192.168.1.13hostname 建议设置好:
hostnamectl set-hostname mongo1
并在每台机器 /etc/hosts 中添加:
192.168.1.11 mongo1
192.168.1.12 mongo2
192.168.1.13 mongo3
sudo apt update
sudo apt install -y gnupg curl
curl -fsSL https://pgp.mongodb.com/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 $(lsb_release -cs)/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
编辑:
sudo nano /etc/mongod.conf
关键配置:
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
security:
authorization: enabled
keyFile: /etc/mongo-keyfile
⚠️ 生产环境一定要开
authorization+keyFile
在 mongo1 执行:
openssl rand -base64 756 > /etc/mongo-keyfile
chmod 400 /etc/mongo-keyfile
sudo chown mongodb:mongodb /etc/mongo-keyfile
复制到其他节点:
scp /etc/mongo-keyfile mongo2:/etc/
scp /etc/mongo-keyfile mongo3:/etc/
在 mongo2 / mongo3:
chmod 400 /etc/mongo-keyfile
chown mongodb:mongodb /etc/mongo-keyfile
每台机器:
sudo systemctl restart mongod
sudo systemctl enable mongod
进入 mongo shell:
mongosh
执行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
})
查看状态:
rs.status()
use admin
db.createUser({
user: "root",
pwd: "StrongPassword",
roles: ["root"]
})
登录方式:
mongosh -u root -p --authenticationDatabase admin
在 PRIMARY:
use test
db.test.insertOne({ ok: 1 })
在 SECONDARY:
rs.secondaryOk()
db.test.find()
RECOVERINGsudo ufw allow 27017
✅ 3 节点
✅ 开启 auth + keyFile
✅ 使用域名或 hosts
✅ 定期备份
如果你告诉我:
我可以给你 更精确的配置示例。