MongoDB的Shard集群來說,添加一個(gè)分片很簡(jiǎn)單,AddShard就可以了。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、建陽網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為建陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
但是縮減集群(刪除分片)這種一般很少用到,但是有些場(chǎng)景,必須把它上面的數(shù)據(jù)自動(dòng)遷移到其他Shard上。
mongodb遷移分片
1 db.runCommand( { removeshard:"your_shard_name" } )
3 { msg : "draining startedsuccessfully" , state: "started" , shard :"mongodb0",ok : 1 }
上面這句會(huì)立即返回,實(shí)際在后臺(tái)執(zhí)行。
我們可以反復(fù)執(zhí)行上面語句,查看執(zhí)行結(jié)果。
1 db.runCommand( { removeshard:"your_shard_name" } )
3 { msg: "draining ongoing" ,state: "ongoing", remaining: { chunks: 42, dbs : 1 }, ok: 1 }
從上面可以看到,正在遷移,還剩下42塊沒遷移完。
當(dāng)remain為0之后,這一步就結(jié)束了。
1 db.runCommand( { movePrimary:"testdb", to: "shard2" })
這次就不是立即返回了,需要很久,然后會(huì)返回如下:
1 { "primary" :"mongodb1", "ok" : 1 }
上面步驟都完成后,還需要再執(zhí)行一次RemoveShard,清理殘余數(shù)據(jù)。
1 db.runCommand( { removeshard: "shard1"} )
執(zhí)行成功后,會(huì)如下結(jié)果:
1 { msg: "remove shard completedsuccesfully", stage: "completed", host: " shard1", ok: 1 }
顯示completed后,就可以安心的關(guān)閉mongod的進(jìn)程了。
注意官方關(guān)于是否需要運(yùn)行movePrimary的說明:
也就是說,如果在這個(gè)片上有非分片的collection,這樣的話,分片的數(shù)據(jù)合到其他片上了,那么剩下的非分片數(shù)據(jù),沒法通過合并分片的方式合到其他服務(wù)器上,所以這時(shí)要運(yùn)行一個(gè)movePrimary命令將這些非分片的數(shù)據(jù)移到另一個(gè)服務(wù)器上。db.runCommand( { movePrimary: "testdb", to: "shard1"})
還有一個(gè)官方說明需要注意的是:
Warning
Do not run themovePrimary until you have finished draining the shard
也就是說,一定要等到分片數(shù)據(jù)遷移完了,再運(yùn)行movePrimary命令?。。?/p>
而且這句命令不像removeshard是異步的,這個(gè)movePrimary命令會(huì)等到將所有非分片數(shù)據(jù)都移到其他服務(wù)器后,才響應(yīng),所以時(shí)間有可能會(huì)比較長(zhǎng),主要還是看這個(gè)服務(wù)器上,非分片數(shù)據(jù)有多少。
另外,movePrimary執(zhí)行完后,還記得將db.runCommand({removeshard:"shardx"})再運(yùn)行一遍,直到看到如下結(jié)果{ msg: "remove shard completed successfully" , stage:"completed", host: "mongodb0", ok : 1 }
到此為止,遷移才真正完成,可以放心地關(guān)閉mongod。
過程: 導(dǎo)出帶有sharding 的集合, 刪除集合 ,導(dǎo)入集合
1.導(dǎo)出集合
/usr/local/mongodb/bin/mongodump--host 127.0.0.1:30000 -d testdb -c table1 -o testdb/
2.禁用分片的自動(dòng)平衡
> use config
>db.settings.update( { _id:"balancer" }, { $set : { stopped:true } } ,true );
>db.printShardingStatus()
3.刪除集合
db.table1.drop();
4.導(dǎo)入集合
/usr/local/mongodb/bin/mongorestore --host 127.0.0.1:30000 -d testdb testdb/
執(zhí)行 db.printShardingStatus() ,查看分片概要
發(fā)現(xiàn)集合table1 的 sharding 功能已經(jīng)被關(guān)閉!
mongodb在做自動(dòng)分片平衡的時(shí)候,或引起數(shù)據(jù)庫響應(yīng)的緩慢,可以通過禁用自動(dòng)平衡以及設(shè)置自動(dòng)平衡進(jìn)行的時(shí)間來解決這一問題。
(1)禁用分片的自動(dòng)平衡
> use config
>db.settings.update( { _id:"balancer" }, { $set : { stopped:true } } ,true );
恢復(fù)動(dòng)態(tài)平臺(tái):
use config
db.settings.remove({"_id":"balancer"});
(2)自定義自動(dòng)平衡進(jìn)行的時(shí)間段
> use config
>db.settings.update({ _id :"balancer" }, { $set : { activeWindow : { start :"21:00", stop :"9:00" } } },true )
網(wǎng)頁名稱:mongodb遷移分片,關(guān)閉或者移除表的sharding,
轉(zhuǎn)載注明:http://jinyejixie.com/article44/poesee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、建站公司、小程序開發(fā)、面包屑導(dǎo)航、品牌網(wǎng)站制作、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)