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