2013-02-12 55 views
3

我剛剛做了mongodb副本集配置,並且都很好看。所有數據都正確地轉移到輔助節點。但是當我查看數據目錄時,我可以看到Primary有〜140G的數據,同時Secondary只有〜110G。MongoDB副本集:主節點和次節點中的磁盤大小差異

有沒有人在設置副本集時遇到過這類問題。這是正常的行爲嗎?

回答

6

當您在輔助設備上從頭開始初始同步時,它將新寫入所有數據。這將刪除填充,空白區域(刪除的數據)等。因此,在這方面,它類似於運行修復。

如果你對主要進行了修復(阻塞操作,只有在絕對必要的情況下才能完成),那麼這兩者將會更接近整體。

如果您檢查來自db.stats()的輸出,您應該看到各種數據庫具有相同的對象數量,數據目錄大小差異沒有什麼可擔心的。

+0

我們可以做什麼來定期優化數據庫,而不會影響生產環境? – geek 2013-02-12 23:06:41

+0

@geek嗯不知道,你將不得不發佈一個db.stats(),但也許2個大小的分配權力可能會有所幫助,畢竟我會說28GB(考慮2GB的預先分配帳戶)可能來自移動文件。 – Sammaye 2013-02-13 08:32:16

+0

除了Sammaye提到的(使用PowerOf2Sizes最初的效率較低,但如果您移動/刪除很多,效率會更高),那麼完整的副本集將爲您提供選項。取出一個輔助設備,執行修復或完成一次完全同步,然後重複,直到完成設置中的所有節點爲止(主要步驟在某個位置)。這可以讓你定期恢復空間而不會產生很大的影響(選舉總會有短暫的考慮)。 – 2013-02-13 11:09:44