MongoDB數據庫數據恢復環境:
一臺Windows Server操作系統的虛擬機,虛擬機上部署有MongoDB數據庫。
MongoDB數據庫故障&檢測:
在未關閉MongoDB服務的情況下,工作人員將MongoDB數據庫文件拷貝到其他分區,然后將原數據庫文件所在分區進行了格式化的操作,格式化完成后將數據庫文件拷回原分區,重新啟動MongoDB服務,發現MongoDB服務無法啟動并報錯。
北亞企安數據恢復——MongoDB數據庫數據恢復
在MongoDB服務沒有關閉的情況下,對MongoDB數據庫文件進行拷貝的操作會導致mongod.lock文件以及WiredTiger.lock文件拷貝出現錯誤。這種情況下只需要在拷貝出來的文件中刪除這兩個文件,然后再次啟動MongoDB服務,由MongoDB自行重新生成即可。
北亞企安數據恢復工程師檢測拷貝出的數據庫文件后發現_mdb_catalog.wt文件丟失。
_mdb_catalog.wt文件存儲了MongoDB中所有集合的元數據,數據庫啟動時需要從這個文件中讀取相關的信息。_mdb_catalog.wt文件丟失導致數據庫無法獲取數據庫中集合對應的WT table名字、集合的創建選項、集合的索引信息等元數據,所以數據庫無法啟動。
MongoDB數據庫數據恢復過程:
1、將MongoDB數據庫涉及到的虛擬機進行鏡像備份,后續的數據分析和數據恢復都基于鏡像文件進行,避免對原始數據造成二次破壞。
2、嘗試從文件系統的角度恢復_mdb_catalog.wt文件。使用工具對數據庫所在分區進行掃描,掃描結果中并沒有找到_mdb_catalog.wt文件的信息。根據MongoDB數據庫中數據文件的特征值再次掃描數據庫分區,也沒有發現_mdb_catalog.wt相關的數據區域。由此可以判斷,_mdb_catalog.wt文件已經被徹底覆蓋破壞掉,無法恢復。只能從數據庫的層面恢復數據。
3、本案例部署的MongoDB數據庫是基于WiredTiger存儲引擎的數據庫系統,可以使用WiredTiger實用工具包提取數據庫中的數據。
a、下載WiredTiger實用工具包,在windows環境下編譯出可執行的wt工具。
北亞企安數據恢復——MongoDB數據庫數據恢復
b、完成wt工具的編譯后,使用編譯出來的wt工具對數據庫的集合文件中的數據進行清洗回寫。完成清洗回寫操作后,直接讀取文件中的數據并寫入到一個.dump文件中。這時數據庫的各個集合文件中的全部可用數據都提取出來了。
4、重新創建一個MongoDB數據庫,根據提取出來的集合文件創建對應數量的空集合,然后使用編譯好的wt工具將提取出來的.dump文件一一寫入到新創建的空集合中。這個時候可以通過查詢集合中的數據確認這些集合與元數據庫中集合的對應關系。
5、修改集合名稱,重建索引信息。由于該MongoDB數據庫中存在Gridfs存儲的大字段(文件)集合,所以通過查詢集合中的記錄確定記錄類型。確定fs.files和fs.chunks集合的位置后,修改這兩個集合名稱為xxx.files和xxx.chunks,重建集合索引,Gridfs集合恢復完成,這時可以正常查看到其中數據:
北亞企安數據恢復——MongoDB數據庫數據恢復
北亞企安數據恢復——MongoDB數據庫數據恢復
6、協助用戶方將全部集合重建索引后,由用戶方對數據庫整體進行查詢驗證,經過反復驗證后確認數據無誤,本次數據恢復工作完成。
-
數據恢復
+關注
關注
10文章
568瀏覽量
17432 -
數據庫
+關注
關注
7文章
3794瀏覽量
64362
發布評論請先 登錄
相關推薦
評論