您好,登錄后才能下訂單哦!
接上一篇
14.配置集群中的balancer進程
balancer進程運行在集群中的某一個mongos實例上,確保chunks均勻分布在整個集群上。
更改指定shard的最大存儲大小
15.移除已有分片集群中的一個分片
在移除一個分片之前需要先確保這個分片上的數據已經移動到其他分片上。
1)確保Blancer進程已經開啟
sh.getBalancerState()
2)確定需要被移除的分片名稱
db.adminCommand( { listShards: 1 } )
或者
db.printShardingStatus()
或者
sh.status()
3)移走分片上的數據塊
mongos> use admin; switched to db admin mongos> db.runCommand({removeShard : "taiwan_shard1"}) { "msg" : "draining started successfully", "state" : "started", "shard" : "taiwan_shard1", "ok" : 1 }
根據網絡狀況和數據量大小,這個操作可能花費幾分鐘或者幾天時間完成
4)檢查遷移的狀態
mongos> db.runCommand({removeShard : "taiwan_shard1"}) { "msg" : "draining ongoing", "state" : "ongoing", "remaining" : { "chunks" : NumberLong(0), "dbs" : NumberLong(2) }, "note" : "you need to drop or movePrimary these databases", "dbsToMove" : [ "taiwan_game4", "taiwan_game5" ], "ok" : 1 }
這里需要注意的是,如果一個分片是一個或者多個數據庫的primary shard,那么這個分片上就存有未被分片的數據。
mongos> use admin; switched to db admin mongos> db.runCommand( { movePrimary: "taiwan_game4", to: "taiwan_shard2" }) { "primary " : "taiwan_shard2:taiwan_shard2/gintama-taiwan-mongodb2:28018", "ok" : 1 } mongos> db.runCommand( { movePrimary: "taiwan_game5", to: "taiwan_shard2" }) { "primary " : "taiwan_shard2:taiwan_shard2/gintama-taiwan-mongodb2:28018", "ok" : 1 }
5)結束遷移過程
mongos> db.runCommand({removeShard : "taiwan_shard1"}) { "msg" : "removeshard completed successfully", "state" : "completed", "shard" : "taiwan_shard1", "ok" : 1 }
當state狀態為completed時,遷移完成。
參考文檔:
http://docs.mongodb.org/v2.4/tutorial/remove-shards-from-cluster/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。