centos

MongoDB分片如何配置

小樊
51
2026-01-10 01:13:52
栏目: 云计算

MongoDB 分片配置全流程

一 架构与准备

二 部署步骤

  1. 启动并初始化 Config Server 副本集
    • 配置示例(/etc/mongod.conf):
      sharding:
        clusterRole: configsvr
      replication:
        replSetName: configReplSet
      net:
        port: 27019
        bindIp: 0.0.0.0
      storage:
        dbPath: /var/lib/mongo
      
    • 初始化:
      mongo --port 27019
      rs.initiate({
        _id: "configReplSet",
        configsvr: true,
        members: [
          { _id: 0, host: "cfg1:27019" },
          { _id: 1, host: "cfg2:27019" },
          { _id: 2, host: "cfg3:27019" }
        ]
      })
      
  2. 启动并初始化各 Shard 副本集
    • 配置示例(/etc/mongod.conf):
      sharding:
        clusterRole: shardsvr
      replication:
        replSetName: shard1
      net:
        port: 27018
        bindIp: 0.0.0.0
      storage:
        dbPath: /var/lib/mongo
      
    • 初始化(以 shard1 为例):
      mongo --port 27018
      rs.initiate({
        _id: "shard1",
        members: [
          { _id: 0, host: "s1a:27018" },
          { _id: 1, host: "s1b:27018" },
          { _id: 2, host: "s1c:27018" }
        ]
      })
      
      其他分片(shard2、shard3…)同理。
  3. 启动 mongos
    mongos --configdb configReplSet/cfg1:27019,cfg2:27019,cfg3:27019 --port 27017
    
  4. 通过 mongos 添加分片
    mongo --port 27017
    sh.addShard("shard1/s1a:27018,s1b:27018,s1c:27018")
    sh.addShard("shard2/s2a:27018,s2b:27018,s2c:27018")
    
  5. 验证集群状态
    sh.status()
    
    看到各 shard 已注册、各 chunk 分布正常即为连通成功。

三 为数据库与集合启用分片

四 分片策略与片键选择

五 运维与安全要点

0
看了该问题的人还看了