溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MongoDB將collection變?yōu)閟hard collection

發(fā)布時(shí)間:2020-08-09 10:12:42 來源:ITPUB博客 閱讀:237 作者:caoyutingtjpu 欄目:關(guān)系型數(shù)據(jù)庫

       MongoDB隨著業(yè)務(wù)量增長,可以把之前不是分片的集合變?yōu)榉制?,但是要注意的是,一旦指定shard key以后就無法直接更改了。下面為從添加shard server到shard key具體操作步驟

1)添加shard server
添加情境:

  • 1.1)數(shù)據(jù)存儲(chǔ)目錄不夠
  • 1.2)無法滿足當(dāng)前生產(chǎn)寫操作
  • 1.3)chunk太多

3)將集合變?yōu)榉制?br />

      添加分片的鍵需要?jiǎng)?chuàng)建索引,否則報(bào)錯(cuò)please create an index that starts with the shard key before sharding

      根據(jù)上面錯(cuò)誤提示要在分片key上面創(chuàng)建索引,該索引要在對(duì)應(yīng)庫下建立,如果在mongos的admin庫下建立會(huì)報(bào)錯(cuò):"errmsg" : "{ configs1/10.9.33.70:26017,10.9.161.65:26017: \"result without error message returned : {}\" }"

4)手動(dòng)遷移數(shù)據(jù)

     如果開啟balance,數(shù)據(jù)會(huì)自動(dòng)打散。如果沒有開啟,頭一次需要自己手動(dòng)遷下數(shù)據(jù):

5)刪除分片集合的分片

      sh.setBalancerState(true);保證balance是開啟的,才會(huì)將被刪除的分片上的數(shù)據(jù)會(huì)自動(dòng)遷移到其他分片上,draining" : true,  --正在遷移數(shù)據(jù)

      這個(gè)命令可以重復(fù)執(zhí)行以便查看遷移的狀態(tài),remaining 字段表示剩余數(shù)據(jù)塊的數(shù)量

 

6)刪除未分片的主分片

      數(shù)據(jù)庫未分片,該數(shù)據(jù)庫就會(huì)選擇一個(gè)分片作為主分片。Db.collection.stats()中"primary" : "mg-test-shard01"顯示就是主分片,刪除這個(gè)主分片,需要先將集合主分片改為其他分片,然后才能刪除主分片

點(diǎn)擊(此處)折疊或打開

  1. db.runCommand( { movePrimary: "db_name", to: "new_shard" })
  2. db.runCommand({removeshard:"mg-test-shard01/10.9.161.65:27019,10.9.33.70:27019"})


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI