温馨提示×

debian mongodb怎样集群

小樊
47
2026-09-02 09:56:59
栏目: 云计算

在 Debian 上部署 MongoDB 集群,通常指 副本集(Replica Set)分片集群(Sharded Cluster)。大多数生产环境先用 副本集,需要横向扩展再上 分片

下面我按 最常见场景 给你讲:


一、环境准备(所有节点都要做)

1. 系统

  • Debian 11 / 12
  • 多台服务器(建议奇数台:3、5)

2. 安装 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 bookworm/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

二、副本集(Replica Set)部署(最常用)

1. 修改配置文件

编辑 /etc/mongod.conf

storage:
  dbPath: /var/lib/mongodb

net:
  bindIp: 0.0.0.0
  port: 27017

replication:
  replSetName: rs0

⚠️ 生产环境 bindIp 不要写 0.0.0.0,写具体 IP

重启:

sudo systemctl restart mongod

2. 初始化副本集(只在主节点执行)

mongo
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "192.168.1.10:27017" },
    { _id: 1, host: "192.168.1.11:27017" },
    { _id: 2, host: "192.168.1.12:27017" }
  ]
})

查看状态:

rs.status()

✅ 副本集完成


三、分片集群(Sharded Cluster,进阶)

架构组成

  • Config Server(配置服务器) ×3
  • Mongos(路由) ×1+
  • Shard(分片) = 每个分片是一个副本集

1. Config Server(3台)

sharding:
  clusterRole: configsvr

replication:
  replSetName: cfgrs

初始化:

rs.initiate({
  _id: "cfgrs",
  configsvr: true,
  members: [...]
})

2. Shard(每个分片是一个副本集)

sharding:
  clusterRole: shardsvr

replication:
  replSetName: shard1

3. Mongos

sharding:
  configDB: cfgrs/192.168.1.20:27019,192.168.1.21:27019,192.168.1.22:27019

启动:

mongos --config /etc/mongos.conf

4. 添加分片

sh.addShard("shard1/192.168.1.30:27018,192.168.1.31:27018")

四、常用运维命令

rs.status()
rs.add("ip:27017")
rs.remove("ip:27017")

sh.status()
sh.enableSharding("db")
sh.shardCollection("db.col", { _id: "hashed" })

五、简单建议

场景 推荐
高可用 副本集(3节点)
大数据量 分片 + 副本集
测试 单机 + 副本集

如果你愿意,可以告诉我:

  • Debian 版本
  • MongoDB 版本
  • 几台机器
  • 是学习还是生产

我可以直接给你 一套可复制的配置文件 + 命令

0