下面以 Debian 11/12 为例,讲一下 MongoDB 副本集(Replica Set) 的基本配置方法。假设你要搭一个 3 节点副本集。
| 节点 | IP | 角色 |
|---|---|---|
| node1 | 192.168.1.11 | primary |
| node2 | 192.168.1.12 | secondary |
| node3 | 192.168.1.13 | secondary |
生产环境建议 奇数节点(3 / 5)
sudo apt update
sudo apt install -y curl gnupg
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
编辑 /etc/mongod.conf
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
security:
authorization: enabled
keyFile: /etc/mongod.key
bindIp生产建议只绑内网 IP
副本集节点间必须信任。
openssl rand -base64 756 > /etc/mongod.key
chmod 400 /etc/mongod.key
sudo chown mongodb:mongodb /etc/mongod.key
scp /etc/mongod.key node2:/etc/
scp /etc/mongod.key node3:/etc/
# 在 node2 / node3 执行
chmod 400 /etc/mongod.key
chown mongodb:mongodb /etc/mongod.key
所有节点:
sudo systemctl enable mongod
sudo systemctl restart mongod
mongosh
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" }
]
})
use admin
db.createUser({
user: "root",
pwd: "StrongPassword",
roles: ["root"]
})
之后连接:
mongosh -u root -p --authenticationDatabase admin
rs.status()
rs.isMaster()
27017bindIp 配置错误keyFile 不一致或权限不对如果你是 单机多实例 / Docker / 云服务器,或者想配 认证 + TLS,可以继续问我。