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