mongodb分布式集群部署,集群分片策略(三)
2.168.155.224:10001'},{_id:1, host:'192.168.155.225:10001'},{_id:0, host:'192.168.155.223:10001'}]}
>rs.initiate(config)
连接到192.168.155.225:10002上初始化副本集shard2:
#/App/mongo/bin/mongo 192.168.155.225:10002/admin
>config={_id:'shard2', members:[{_id:0, host:'192.168.155.224:10002'}, {_id:1, host:'192.168.155.225:10002'},{_id:0, host:'192.168.155.223:10002'}, ]}
>rs.initiate(config)
连接到192.168.155.223:10002上初始化副本集shard3:
#/App/mongo/bin/mongo 192.168.155.225:10003/admin
>config={_id:'shard3', members:[{_id:0, host:'192.168.155.224:10003'}, {_id:1, host:'192.168.155.225:10003'},{_id:0, host:'192.168.155.223:10003'}, ]}
>rs.initiate(config)
可以通过rs.status()命令查看副本集配置结果;
5. 向集群添加副本集分片
先通过mongo shell连接到mongos实例:
# /App/mongo/bin/mongo 192.168.155.226:30001/admin
> db.runCommand({addshard:"shard1/192.168.155.224:10001", name:"ShardSet1"})
> db.runCommand({addshard:"shard2/192.168.155.225:10002", name:"ShardSet2"})
> db.runCommand({addshard:"shard3/192.168.155.223:10003", name:"ShardSet3"})
通过db.runCommand({listshards: 1})查看分片集群的信息:
6. 开启数据库的分片功能
> sh.enableSharding("page_db")
7. 开启数据库中users集合的分片功能,并指定_id的散列值组作为片键
sh.shardCollection("page_db.users", {_id : "hashed"})
七、 总结
副本集大量应用在生产环节下,可以给MongoDB提供冗余,虽然能够自动故障切换,但从应用角度上来说还是需要额外的逻辑的。
分片功能在少数据量时没有必要,只是增加了架构的复杂性。但如果数据量大,访问量大的情况下,分片还是很有必要的。