温馨提示×

debian怎么配置mongodb副本

小樊
46
2026-09-05 13:00:09
栏目: 云计算

下面以 Debian 11/12 为例,说明如何配置 MongoDB 副本集(Replica Set)


一、环境准备

假设有 3 台 Debian 服务器:

节点 IP 主机名
Primary 192.168.1.10 mongo1
Secondary 192.168.1.11 mongo2
Secondary 192.168.1.12 mongo3

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


二、安装 MongoDB(每台机器)

1. 导入 MongoDB 源(以 6.0 为例)

sudo apt update
sudo apt install -y curl gnupg
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/debian $(lsb_release -cs)/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

2. 安装

sudo apt update
sudo apt install -y mongodb-org

三、配置 MongoDB 副本集

1. 修改配置文件(每台机器)

sudo nano /etc/mongod.conf

关键配置:

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

bindIp 至少包含内网 IP,不要用 127.0.0.1 单独

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

sudo nano /etc/hosts
192.168.1.10 mongo1
192.168.1.11 mongo2
192.168.1.12 mongo3

3. 重启服务

sudo systemctl restart mongod
sudo systemctl enable mongod

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

登录 MongoDB:

mongosh

执行:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo1:27017" },
    { _id: 1, host: "mongo2:27017" },
    { _id: 2, host: "mongo3:27017" }
  ]
})

查看状态:

rs.status()

五、验证副本集

主节点写入

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

从节点读取

mongosh --host mongo2
rs.secondaryOk()
use test
db.user.find()

六、常用管理命令

rs.add("mongo4:27017")        // 添加节点
rs.remove("mongo3:27017")    // 移除节点
rs.status()                  // 查看状态
rs.conf()                    // 查看配置

七、防火墙(如启用)

sudo ufw allow 27017

八、常见问题

1. 节点一直是 STARTUP2

  • 时间不同步 → 安装 NTP
  • 防火墙未开放
  • host 无法解析

2. 从节点不能读

rs.secondaryOk()

3. 使用认证(推荐)

后续可配置:

  • keyFile
  • security.authorization: enabled

如果你需要:

  • 带账号认证副本集
  • Docker 方式
  • 只在一台机器模拟副本集

可以告诉我,我可以给你专门版本。

0