下面以 Debian 系统 为例,说明如何配置 MongoDB 副本集(Replica Set)。示例基于 MongoDB 6.x / 7.x(官方 APT 仓库),使用 3 节点副本集(最常见、推荐)。
如果还没安装:
# 导入 MongoDB GPG 密钥
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
# 添加 MongoDB 仓库
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" \
| tee /etc/apt/sources.list.d/mongodb-org-7.0.list
# 安装
apt update
apt install -y mongodb-org
假设 3 台服务器:
| 节点 | IP |
|---|---|
| node1 | 192.168.1.10 |
| node2 | 192.168.1.11 |
| node3 | 192.168.1.12 |
副本集名称:rs0
nano /etc/mongod.conf
关键配置:
net:
port: 27017
bindIp: 0.0.0.0 # 生产建议指定 IP
replication:
replSetName: "rs0"
security:
authorization: enabled
keyFile: /etc/mongodb-keyfile # 用于节点认证
openssl rand -base64 756 > /etc/mongodb-keyfile
chmod 400 /etc/mongodb-keyfile
chown mongodb:mongodb /etc/mongodb-keyfile
所有节点的 keyFile 内容必须完全一致
systemctl restart mongod
systemctl enable mongod
进入 mongo shell:
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()
初始化完成后,先创建用户:
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword",
roles: [ { role: "root", db: "admin" } ]
})
退出并以管理员登录:
mongosh -u admin -p --authenticationDatabase admin
rs.status()
rs.isMaster()
结果中应看到:
primary 一个secondary 两个members 共 3 个ufw allow 27017
建议统一使用 IP + bindIp: 0.0.0.0
rs.stepDown()
或重建节点数据目录
如果你愿意,我可以:
rs.status() 报错直接告诉我你的 MongoDB 版本和系统环境即可。