温馨提示×

debian mongodb如何设副本集

小樊
48
2026-09-29 13:48:46
栏目: 云计算

在 Debian 上部署 MongoDB 副本集(Replica Set)通常包括安装 MongoDB、配置副本集、初始化副本集三个步骤。下面以 3 节点副本集为例(1 主 2 从),适用于 Debian 11 / 12。


一、安装 MongoDB(所有节点)

1. 导入 MongoDB 官方源(以 7.0 为例)

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

二、配置 MongoDB 副本集(每个节点)

2. 修改配置文件

编辑 /etc/mongod.conf

sudo nano /etc/mongod.conf

关键配置示例(每个节点都改):

net:
  port: 27017
  bindIp: 0.0.0.0   # 生产建议改为具体IP

replication:
  replSetName: rs0

storage:
  dbPath: /var/lib/mongodb

⚠️ 如果是多机:

  • bindIp 建议写 本机内网IP
  • 三台机器要能互相访问 27017 端口

重启服务:

sudo systemctl restart mongod
sudo systemctl enable mongod

三、初始化副本集(只需在主节点执行)

3. 登录 MongoDB

mongosh

4. 初始化副本集

假设三台机器 IP:

  • 10.0.0.1
  • 10.0.0.2
  • 10.0.0.3
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "10.0.0.1:27017" },
    { _id: 1, host: "10.0.0.2:27017" },
    { _id: 2, host: "10.0.0.3:27017" }
  ]
})

四、验证副本集状态

rs.status()

看到:

  • 1 个 PRIMARY
  • 2 个 SECONDARY

即为成功 ✅


五、常见问题

1. 节点一直是 STARTUP / UNKNOWN

  • 防火墙未放行 27017
  • bindIp 配置错误
  • 主机名无法解析(建议用 IP)

2. 从节点无法读数据

rs.secondaryOk()

3. 添加 / 删除节点

rs.add("10.0.0.4:27017")
rs.remove("10.0.0.2:27017")

六、推荐生产建议

  • 奇数节点(3 / 5)
  • 启用鉴权(security.authorization: enabled)
  • 使用 keyfile 或 x.509
  • 云服务器注意安全组

如果你需要:

  • 单机伪副本集
  • Docker 部署
  • 带账号权限的副本集

可以继续告诉我你的使用场景。

0 踩