mongodb sharding 原理學習與試用(五)之添加與移除shard

來源:互聯網
上載者:User

1. 今天上午遇到一個有關host設定一部分是localhost另一部分是hostname,造成向sharding添加shard的時候失敗。特紀錄下來。

  問題:一個已存在的sharding各個shard都是原生其他的mongod進程,在當初添加shard的時候,db.runCommand({addshard:"localhost:port"})。後來又在本機配置了一個replSet.問題就來了。replSet布署成功後,其中的各個節點的host使用的是hostname.這樣一來,當我將replSet添加到sharding的時候報錯。因為sharding的各個節點如果都是原生其他進程的話,在設定host的時候要麼全部使用localhost要麼全部使用hostname,如果混用會報錯。

  解決過程:剛開始我打算將replSet的各個節點的host改成localhost.但是在reconfig的時候報錯。報錯如下:

  

  之後考慮將已經添加到sharding中各個shard的host改成hostname.修改方法是use config;db.shards.update({_id:xx},{host:"xx"});這回修改成功了。之後就簡單了。

2. 從sharding當中移除一個shard。需要將儲存在將被移除的shard中資料移到其他的shard中。移除完成後,被移除的shard就沒有資料了。

  (一)移除一個shard. use admin; db.runCommand({removeshard:"name"});

  

  (二)執行結果如,需要注意的是,note有提示說需要執行movePrimary操作。這是因為被移除的shard是某幾個庫的大本營。如果是這種情況,就需要在資料移除完之後執行movePrimary操作,為這幾個庫設定新的大本營。需要設定新的大本營的幾個庫這裡也已經給出來了,例如dbsToMove的值 。如果被移除的shard不存在是任何一個庫的大本營,那麼就不需要執行movePrimary.如

  

  

  (三)如,名為shard0001的shard並不是哪個庫的大本營,因此在被移除的時候,結果輸出中並沒有類似於移除shard0000的時候有note與dbsToMove這兩個值。需要注意的是,被移除的shard是某幾個庫的大本營,不管是否有庫不參加分區,都需要為庫設定新的大本營。如

  

  

  (四)在資料移轉之前sar的partitioned的值是false,遷移完成執行movePrimary操作後,sar的partitioned的值仍是false.如。

  

  (五)在移除資料過程中,由於網路與資料量的原因,可能需要花費不同的時間。執行db.runCommand({removeshard:"name"})命令可以查看資料移轉的進度。

   

  (六)如,通過執行db.runCommand({removeshard:"name"})命令不但可以開始移除shard,還可以在移除的過程中查看資料移轉的進度。remaining的值就表示資料移轉的進度。其中chunks代表還剩多少塊資料需要被遷移。當chunks的值等於0時代表資料移轉完成。dbs的值代表還剩多少個庫需要設定新的大本營。movePrimary操作要等到資料移轉完成之後再進行。也就是當chunks的值等於0後才可以執行movePrimary操作。

  

  (七)如,chunks的值等於0代表資料移轉已經完成。可以開始movePrimary操作。

  

  (八)如,將庫foo,too重新設定大本營為rs0這個shard.操作完成後,可以查看整個移除進度了。

  

  (九)如,代表整個移除過程已經全部完成。這個時候就可以放心的停掉shard0000這個shard了。

  

   

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.