資料庫數據恢復—MongoDB資料庫遷移數據後不可用的數據恢復案例

MongoDB資料庫數據恢復環境:

一台操作系統為Windows Server的虛擬機上部署MongoDB資料庫

北亞企安數據恢復—MongoDB資料庫數據恢復

MongoDB資料庫故障:

工作人員在MongoDB服務仍然開啟的情況下將MongoDB資料庫文件拷貝到其他分區,數據複製完成後將MongoDB資料庫原先所在的分區進行了格式化操作。

結果發現拷貝過去的數據無法使用。管理員又將數據拷貝回原始分區,MongoDB服務仍然無法使用,報錯「Windows無法啟動MongoDB服務(位於 本地計算機 上)錯誤1067:進程意外終止。」


北亞企安數據恢復—MongoDB資料庫數據恢復


通常情況下,如果在MongoDB服務尚未關閉的情況下拷貝資料庫文件,會導致mongod.lock和WiredTiger.lock這兩個文件拷貝出錯。如果出現這種情況,可以在拷貝出來的文件中找到這兩個文件並刪除,再次啟動MongoDB資料庫,這兩個文件會自動重新生成,資料庫即可正常啟動。

北亞企安數據恢復工程師對拷貝出來的所有文件進行檢測,發現遷移出的資料庫文件中丟失了_mdb_catalog.wt文件。

北亞企安數據恢復—MongoDB資料庫數據恢復

_mdb_catalog.wt文件是專門用於存儲MongoDB中所有集合元數據的文件,MongoDB資料庫啟動時必須讀取的相關信息都存儲於_mdb_catalog.wt文件中。所以,導致資料庫啟動報錯的原因應該是_mdb_catalog.wt文件丟失導致資料庫無法獲取集合對應的WT table名字、集合的創建選項、集合的索引信息等元數據。


MongoDB資料庫數據恢復過程:

1、掃描MongoDB資料庫所在分區的底層數據,但是沒有掃描到和_mdb_catalog.wt文件有關的信息,使用其他掃描方式進行掃描,仍然無法查找到_mdb_catalog.wt文件相關信息,基本上可以確定該文件已被覆蓋,無法通過恢復_mdb_catalog.wt文件的方式來修復資料庫。

2、調整MongoDB資料庫數據恢復策略。由於故障資料庫是基於WiredTiger存儲引擎,北亞企安數據恢復工程師在Windows環境下編譯出可執行的wt工具。


北亞企安數據恢復—MongoDB資料庫數據恢復


3、藉助編譯出的wt工具清洗回寫資料庫集合文件內所有數據,讀取數據結果並寫入到文件中。創建一個全新的MongoDB資料庫,創建相應數據量的集合,將文件逐一寫入集合中,查詢數據集並重建索引信息。

4、通過查詢集合中的記錄,確定記錄類型,重建集合索引。集合恢復完成後可以正常查看其中數據:


北亞企安數據恢復—MongoDB資料庫數據恢復

北亞企安數據恢復—MongoDB資料庫數據恢復


5、對全部集合進行索引重建之後,用戶方對資料庫進行查詢驗證,經過驗證確認數據無誤,此次數據恢復工作完成。

北亞企安數據恢復—MongoDB資料庫數據恢復