温馨提示×

debian怎么配mongodb副本

小樊
45
2026-09-26 15:44:35
栏目: 云计算

下面以 Debian 11/12 为例,讲一下 MongoDB 副本集(Replica Set) 的基本配置方法。假设你要搭一个 3 节点副本集。


一、环境准备

1. 节点规划(示例)

节点 IP 角色
node1 192.168.1.11 primary
node2 192.168.1.12 secondary
node3 192.168.1.13 secondary

生产环境建议 奇数节点(3 / 5)


二、安装 MongoDB(所有节点)

1. 导入 MongoDB 官方源

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

2. 安装

sudo apt update
sudo apt install -y mongodb-org

三、配置 MongoDB(所有节点)

1. 修改配置文件

编辑 /etc/mongod.conf

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /etc/mongod.key

bindIp 生产建议只绑内网 IP


四、配置密钥文件(重要)

副本集节点间必须信任。

1. 生成 keyFile(在 node1 执行)

openssl rand -base64 756 > /etc/mongod.key
chmod 400 /etc/mongod.key
sudo chown mongodb:mongodb /etc/mongod.key

2. 复制到其他节点

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

五、启动 MongoDB

所有节点:

sudo systemctl enable mongod
sudo systemctl restart mongod

六、初始化副本集(只在 PRIMARY 节点)

1. 登录 mongo

mongosh

2. 初始化

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()

九、常见问题

❌ 节点无法加入

  • 防火墙未放行 27017
  • bindIp 配置错误
  • keyFile 不一致或权限不对

❌ 一直 RECOVERING

  • 数据不一致
  • 磁盘空间不足

十、可选优化

  • 开启 arbiter 节点(不存数据)
  • 使用 TLS
  • 配置 延迟节点(delayed node)

如果你是 单机多实例 / Docker / 云服务器,或者想配 认证 + TLS,可以继续问我。

0 踩