温馨提示×

怎样配DebianMongoDB副本

小樊
37
2026-10-11 07:53:04
栏目: 云计算

下面以 Debian(11/12 均可) 为例,手把手说明 MongoDB 副本集(Replica Set) 的搭建步骤。假设你有 3 台 Debian 服务器(最少 3 台才能保证自动选主)。


一、环境准备

1. 服务器规划

假设:

  • mongo1:192.168.1.11
  • mongo2:192.168.1.12
  • mongo3:192.168.1.13

hostname 建议设置好:

hostnamectl set-hostname mongo1

并在每台机器 /etc/hosts 中添加:

192.168.1.11 mongo1
192.168.1.12 mongo2
192.168.1.13 mongo3

二、安装 MongoDB(全部节点)

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

sudo apt update
sudo apt install -y gnupg curl

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

2. 安装

sudo apt install -y mongodb-org

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

1. 修改配置文件

编辑:

sudo nano /etc/mongod.conf

关键配置:

net:
  port: 27017
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /etc/mongo-keyfile

⚠️ 生产环境一定要开 authorization + keyFile


四、创建 keyFile(用于节点间认证)

在 mongo1 执行:

openssl rand -base64 756 > /etc/mongo-keyfile
chmod 400 /etc/mongo-keyfile
sudo chown mongodb:mongodb /etc/mongo-keyfile

复制到其他节点:

scp /etc/mongo-keyfile mongo2:/etc/
scp /etc/mongo-keyfile mongo3:/etc/

在 mongo2 / mongo3:

chmod 400 /etc/mongo-keyfile
chown mongodb:mongodb /etc/mongo-keyfile

五、启动 MongoDB

每台机器:

sudo systemctl restart mongod
sudo systemctl enable mongod

六、初始化副本集(只需在任一节点)

进入 mongo shell:

mongosh

执行:

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

查看状态:

rs.status()

七、创建管理员用户(推荐)

use admin
db.createUser({
  user: "root",
  pwd: "StrongPassword",
  roles: ["root"]
})

登录方式:

mongosh -u root -p --authenticationDatabase admin

八、验证副本集

在 PRIMARY:

use test
db.test.insertOne({ ok: 1 })

在 SECONDARY:

rs.secondaryOk()
db.test.find()

九、常见问题

1. 节点显示 RECOVERING

  • 时间不同步(装 NTP)
  • keyFile 不一致
  • 防火墙未放行 27017

2. 防火墙

sudo ufw allow 27017

十、最小生产建议

✅ 3 节点
✅ 开启 auth + keyFile
✅ 使用域名或 hosts
✅ 定期备份


如果你告诉我:

  • Debian 版本
  • MongoDB 版本
  • 单机 / 多机 / 容器

我可以给你 更精确的配置示例。

0 踩