1.1 判断是否Shard集群
admin> db.runCommand({ isdbgrid : 1})
1.2 列出所有分片信息
admin> db.runCommand({ listshards : 1})
1.3 列出开启分片的数据库
admin> use config config> db.databases.find( { "partitioned": true } ) 或者: config> db.databases.find() //列出所有数据库分片情况
1.4 查看分片的片键
config> db.collections.find().pretty() { "_id" : "test.vast", "lastmodEpoch" : ObjectId("58a599f19c898bbfb818b63c"), "lastmod" : ISODate("1970-02-19T17:02:47.296Z"), "dropped" : false, "key" : { "id" : 1 }, "unique" : false }
1.5 查看分片的详细信息
admin> sh.status()
1.6 删除分片节点(谨慎)
(1)确认blance是否在工作 sh.getBalancerState() (2)删除shard2节点(谨慎) mongos> db.runCommand( { removeShard: "shard2" } ) 注意:删除操作一定会立即触发blancer。
2 balancer操作
2.1 介绍
mongos的一个重要功能,自动巡查所有shard节点上的chunk的情况,自动做chunk迁移。 什么时候工作? 1、自动运行,会检测系统不繁忙的时候做迁移 2、在做节点删除的时候,立即开始迁移工作 3、balancer只能在预设定的时间窗口内运行 有需要时可以关闭和开启blancer(备份的时候) mongos> sh.stopBalancer() mongos> sh.startBalancer()
2.2 自定义 自动平衡进行的时间段
https://docs.mongodb.com/manual/tutorial/manage-sharded-cluster-balancer/#schedule-the-balancing-window // connect to mongos use config sh.setBalancerState( true ) db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "3:00", stop : "5:00" } } }, true ) sh.getBalancerWindow() sh.status() 关于集合的balancer(了解下) 关闭某个集合的balance sh.disableBalancing("students.grades") 打开某个集合的balancer sh.enableBalancing("students.grades") 确定某个集合的balance是开启或者关闭 db.getSiblingDB("config").collections.findOne({_id : "students.grades"}).noBalance;
66