温馨提示×

debian如何配mongodb副本

小樊
40
2026-09-02 10:03:00
栏目: 云计算

下面以 Debian 11/12 为例,说明如何配置 MongoDB 副本集(Replica Set)。假设你有 3 台服务器(最简高可用方案)。


一、环境准备

1. 服务器规划

假设:

  • node1: 192.168.1.11
  • node2: 192.168.1.12
  • node3: 192.168.1.13

每台都安装 MongoDB(版本建议 6.x / 7.x)


二、安装 MongoDB(每台机器)

1. 导入 MongoDB 源

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

⚠️ 生产环境建议 bindIp 只绑定内网 IP

2. 配置 hosts(可选但推荐)

sudo vim /etc/hosts
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3

3. 重启 MongoDB

sudo systemctl restart mongod
sudo systemctl enable mongod

四、初始化副本集(只需在一台执行)

进入 mongo shell:

mongosh

执行:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "node1:27017" },
    { _id: 1, host: "node2:27017" },
    { _id: 2, host: "node3:27017" }
  ]
})

查看状态:

rs.status()

五、验证副本集

主节点写入

use test
db.user.insert({name:"tom"})

从节点读取(需先执行)

rs.secondaryOk()
db.user.find()

六、常见问题

1. 从节点不能写

MongoDB 副本集中 只有 Primary 可写

2. 仲裁节点(可选)

如果只有 2 台机器:

rs.addArb("node3:27017")

3. 防火墙

确保 27017 端口互通:

sudo ufw allow 27017

七、生产建议

  • 使用 keyfile 认证
  • 启用 TLS
  • 配置 监控(mongostat / PMM)
  • 定期备份(mongodump / Oplog)

如果你愿意,我可以:

  • 帮你写 一键部署脚本
  • 配置 认证 + 用户权限
  • 或教你 Docker 方式部署副本集

直接告诉我你的场景即可。

0