使用副本集進行 MongoDB 還原
我有這樣的 MongoDB 設置:
Primary | Server1 -----------+--------- Secondary | Server2 -----------+--------- Arbiter | Server3 -----------+--------- Backup | Server4
我有一個使用mongodump進行日常備份的備份伺服器。現在我必須使用mongorestore測試我的備份轉儲。
主要問題如下:恢復備份的最佳方法是什麼?
Q1:我必須遵循這些步驟嗎?
- 停止仲裁和輔助
- 在主數據庫中刪除數據庫
- 將備份恢復到主要
- 刪除輔助數據庫
- 重啟所有伺服器
Q2:在不停止任何伺服器的情況下恢復主伺服器上的備份?
Q3。將次要作為主要並將備份還原到次要(以前的主要),並將其設為主要。
Q4:有什麼辦法可以恢復這兩個伺服器?
請建議恢復 MongoDB 的最佳方法。
根據 MongoDB BOL 記錄的Here MongoDB 為**
two options
**副本restoring
集的次要成員提供:1)手動將數據庫文件複製到每個數據目錄。
2)允許初始同步自動分發數據。
注意:-如果您的數據庫很大,
initial sync
可能需要很長時間才能完成。對於大型數據庫,最好將數據庫文件複製到每個host
.
主要問題如下:恢復備份的最佳方法是什麼?
如果要將
mongodump
備份還原到副本集中,則需要還原mongorestore
到目前主節點。數據將通過正常方式複製到其他副本集成員。您可以mongorestore --drop ...
在導入之前使用刪除每個集合(如果它已經存在),但在完全恢復方案中,您通常會從空部署開始重建副本集。在 MongoDB 3.6 中,mongorestore
僅插入文件 - 它不會刪除任何現有數據庫或更新/更新/替換任何現有文件。Q1:我必須遵循這些步驟嗎?
此列表中唯一適用的步驟是“將備份還原到主節點”。隨著
mongodump
您正在導出數據和索引定義,並且必須mongorestore
進入主數據庫以重建數據文件。您的輔助設備在您恢復時必須線上,並且能夠通過複製跟上。您可以使用該--writeConcern majority
選項等待大多數副本集確認寫入,並確保您的還原不會超過複製。Q2:在不停止任何伺服器的情況下恢復主伺服器上的備份?
這是正確的做法。
Q3。將次要作為主要並將備份還原到次要(以前的主要),並將其設為主要。
一個副本集只能有一個主節點,因此您不會通過交換目前主節點和次節點的角色來獲得任何收益。數據仍然需要複製。
Q4:有什麼辦法可以恢復這兩個伺服器?請建議恢復 MongoDB 的最佳方法。
您必須將其還原
mongodump
到主數據庫才能建構數據文件。如果您正在尋找將數據複製到每個輔助節點的替代方法:您可以mongorestore
進入單個節點副本集,停止主節點,然後將數據文件複製到新的輔助節點並避免初始同步。當然有更好的備份方法,特別是如果您的目標是更快(且影響更小)的備份和恢復時間。備份大型部署
mongodump
可能會對性能產生重大影響(特別是如果您的數據集比可用 RAM 大得多)並且需要更長的時間來恢復,因為所有數據文件和索引都需要重建。有關備份策略的一般比較,請參閱備份及其在災難恢復中的作用。此比較中引用的 MMS 產品現在稱為 MongoDB Cloud Manager,但一般注意事項和比較點仍然適用。