mongodb分片叢集的查詢及管理
阿新 • • 發佈:2020-07-20
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