MongoDB 分片配置全流程
一 架构与准备
二 部署步骤
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" }
]
})
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
net:
port: 27018
bindIp: 0.0.0.0
storage:
dbPath: /var/lib/mongo
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…)同理。mongos --configdb configReplSet/cfg1:27019,cfg2:27019,cfg3:27019 --port 27017
mongo --port 27017
sh.addShard("shard1/s1a:27018,s1b:27018,s1c:27018")
sh.addShard("shard2/s2a:27018,s2b:27018,s2c:27018")
sh.status()
看到各 shard 已注册、各 chunk 分布正常即为连通成功。三 为数据库与集合启用分片
sh.enableSharding("mongodbtest")
db.customer.createIndex({ name: 1 })
sh.shardCollection("mongodbtest.customer", { name: 1 })
db.customer.createIndex({ name: "hashed" })
sh.shardCollection("mongodbtest.customer", { name: "hashed" })
sh.status()
db.stats()
四 分片策略与片键选择
五 运维与安全要点