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數據庫數據恢復