1. 程式人生 > 實用技巧 >mongodb分片叢集的查詢及管理

mongodb分片叢集的查詢及管理

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