標籤:mongodb 分區叢集 資料同步
在本篇部落格中我們主要討論下部落格的管理。由於已經在前面五篇中寫了詳細的執行個體,因此這裡就不再舉例說明。
一、監控
分區叢集是整個體系中比較複雜的一塊,因此更應該需要監控。
主要命令: serverstatus和currentOp()
二、手動分區
手動分區意思就是手動對線上分區叢集的塊進行拆分和遷移。一般而言,一個分區寫的越多,它越大。 movechunk命令在這種情況下同樣有協助
三、增加一個分區
sh.addShard("computername:port")
使用這種方式增加容量,要注意向新分區遷移資料所花費的時間。預計遷移速度是每分鐘100~200M。最好在索引和工作集達到現有計劃添加新分區。
四、刪除分區
在一些很少見的情況下,你可能想刪除一個分區,可以通過命令removeshard命令進行刪除。一旦分區被清空,你還要確認將要刪除的分區不是資料庫的主分區,可以通過命令config.databases集合進行查詢;
db.databases.find()
五、集合去分區
雖然可以刪除一個分區,但是沒有正式的路徑去掉集合的分區。做法就是先用mongodump命令匯出資料然後再用mongorestore來恢複資料。
六、備份分區集合
要備份分區叢集,就是需要配置資料以及每個分區資料的副本;一種方式是利用monodump命令來匯出資料。另一方式就是從每個分區的一個成員裡複製資料檔案,再從另一台伺服器中複製資料檔案。
無論那種方式,要確認再備份系統的時候沒有塊處在移動過程中。
停止均衡器:use config; db.setting.update({_id:"balancer"},{$set:{stopped:true},true})
備份之前重新確認: use config, db.locks.find({"_id":"balancer"})
備份之後別忘了啟動均衡器
sh.setBalancerState()
sh.isBalancerRunning()
七、容錯移轉和恢複
分區成員故障,自動會轉移到其他複本集一員。如果有不正常的表現,可以利用重啟mongos進行進行重設
設定管理員故障:一個分區叢集一般有三台設定管理員,如果有兩台發生故障,那麼剩餘的設定管理員變為唯讀狀態,所有的拆分和均衡操作都會停止。這個對叢集的讀寫沒有影響,當三條設定管理員恢複後,均衡器就會它停止的地方那個重新開始工作
mongos故障:如果mongos進程發生故障,一般重啟應用伺服器;
【MongoDB】在windows平台下mongodb的分區叢集(六)