温馨提示×

linux mongodb配置如何集群搭建

小樊
37
2026-10-28 05:17:48
栏目: 云计算

下面给你一份Linux 下 MongoDB 集群搭建(副本集 + 分片)的实用指南,从最常用副本集到分片集群逐步说明,适合生产环境参考。


一、MongoDB 集群常见架构

  1. 副本集(Replica Set)(最常用,高可用)
  2. 分片集群(Sharded Cluster)(大数据量、水平扩展)
  3. 单节点(不推荐生产)

二、环境准备(示例)

  • OS:CentOS 7 / Ubuntu 20.04
  • MongoDB:6.x / 7.x
  • 3 台服务器(示例):
    • 192.168.1.10
    • 192.168.1.11
    • 192.168.1.12

三、MongoDB 副本集搭建(推荐)

1. 安装 MongoDB(三台都执行)

# Ubuntu
sudo apt update
sudo apt install -y mongodb-org

# CentOS
sudo yum install -y mongodb-org

启动:

systemctl start mongod
systemctl enable mongod

2. 修改配置文件

编辑 /etc/mongod.conf

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

net:
  bindIp: 0.0.0.0
  port: 27017

replication:
  replSetName: rs0

重启:

systemctl restart mongod

3. 初始化副本集(只需一台执行)

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()

✅ 副本集完成


四、MongoDB 分片集群(Sharded Cluster)

架构说明

  • Config Server(配置服务器):3 台
  • Mongos(路由):1~多台
  • Shard(分片):每个分片是一个副本集

1. 配置 Config Server(3 台)

sharding:
  clusterRole: configsvr

replication:
  replSetName: cfgrs

net:
  bindIp: 0.0.0.0
  port: 27019

初始化:

mongo --port 27019
rs.initiate({...})

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

sharding:
  clusterRole: shardsvr

replication:
  replSetName: shard1

net:
  port: 27018

3. 启动 Mongos

mongos --configdb cfgrs/192.168.1.10:27019,192.168.1.11:27019,192.168.1.12:27019

4. 添加分片

mongo
sh.addShard("shard1/192.168.1.10:27018,192.168.1.11:27018")

5. 开启分片

sh.enableSharding("mydb")
sh.shardCollection("mydb.user", { user_id: "hashed" })

五、常用运维命令

rs.status()         # 副本集状态
sh.status()         # 分片状态
db.printSlaveReplicationInfo()

六、注意事项

✅ 生产必须:

  • 开启 auth(账号密码)
  • 使用 keyFile
  • 配置 防火墙
  • 数据目录使用 SSD

✅ 推荐:

  • 副本集 ≥ 3 节点
  • 分片集群 ≥ 2 个 shard

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

  • 是 测试环境还是生产
  • MongoDB 版本
  • 是否 docker / k8s

我可以直接给你一份可复制的配置文件 + 命令脚本。

0 踩