Replication

從 mongodb 回收可用空間的過程,複製在那裡

  • March 23, 2017

我們在生產伺服器上面臨空間壓力,因此我們計劃從生產實例中回收空間。複製在那裡,任何人都可以幫助我了解按順序回收可用空間的完整過程。

我正在考慮在從節點上使用修復數據庫命令來回收空間,但在修復到主伺服器並再次開始複製後不知道如何製作輔助節點。

一勞永逸:數據庫修復命令可能有害,建議不要使用

除非您別無選擇,否則不應使用 repairDatabase 進行數據恢復。

該命令獲得一個全域寫鎖,並會阻塞其他操作,直到它完成。

在生產系統中幾乎沒有您想要的。我已經回答了一個類似但不相同的問題。但是,同樣的規則適用。仔細閱讀容量規劃部分。

老實說:如果你必須要求程序,你真的,真的,真的不應該考慮執行它。即使您獲得了詳細的操作方法,您也將缺乏對潛在副作用的任何了解。如果是生產系統,請給自己找一個 DBA。這是值得的。

您可以使用 repair db 命令來利用空間。正如您所提到的,您正在使用副本集,因此您可以重複以下步驟(我假設您使用的是 3 個成員副本集):

  1. 停止其中一個輔助埠並在其他埠上啟動它並進行數據庫修復。
  2. 現在使用帶有 replset 選項的舊埠重新啟動您的輔助伺服器。

對剩餘的次要重複此操作。

對於主要,您可以使用“rs.stepDown”將其降級為次要,然後執行上述步驟。但在開始執行此操作之前,請確保您的 Db 中有可用空間,它應該等於 db size + 2GB。

引用自:https://dba.stackexchange.com/questions/125372