服務器數據恢復環境:
一臺Windows Server操作系統服務器,服務器上部署MongoDB數據庫。
MongoDB數據庫故障&檢測:
工作人員在未關閉MongoDB數據庫服務的情況下,將數據庫文件拷貝到其他分區。拷貝完成后將原MongoDB數據庫所在分區進行了格式化操作,然后將數據庫文件拷回原分區,重新啟動MongoDB服務,服務無法啟動。報錯如下:
北亞企安數據恢復——MongoDB數據恢復
Tips:在MongoDB服務沒有關閉的情況下,直接拷貝MongoDB數據庫文件會導致mongod.lock文件以及WiredTiger.lock文件拷貝出錯。這種情況下只要在拷貝出的文件中刪除這兩個文件,重新啟動MongoDB服務后MongoDB會自動重新生成這2個文件。
對工作人員拷貝出的文件進行檢測后發現,拷貝出的數據庫文件中沒有發現_mdb_catalog.wt文件。
Tips:_mdb_catalog.wt文件里存儲了MongoDB數據庫中所有集合的元數據,MongoDB數據庫啟動時需要從_mdb_catalog.wt文件中讀取相關信息。_mdb_catalog.wt文件丟失會導致MongoDB數據庫無法獲取數據庫中集合對應的名字、集合的創建選項、集合的索引信息等元數據,MongoDB數據庫無法啟動。
MongoDB數據庫數據恢復過程:
1、將服務器中所有磁盤編號后取出,初步檢測后沒有發現明顯的硬件故障,都可以正常讀取。以只讀方式將所有磁盤進行扇區級全盤鏡像,鏡像完成后將所有詞磁盤按照編號還原到原服務器中,后續的數據分析和數據恢復操作都基于鏡像文件進行,避免對原磁盤數據造成二次破壞。
2、嘗試從文件系統層面恢復_mdb_catalog.wt文件。掃描數據庫分區并沒有發現_mdb_catalog.wt文件相關信息。根據MongoDB數據庫中數據文件的特征值掃描MongoDB數據庫所在分區,也沒有發現和_mdb_catalog.wt相關的數據區域。這種情況下可以判斷_mdb_catalog.wt文件已經被徹底破壞,無法恢復。
3、嘗試從數據庫層面恢復數據。
本案例中部署的MongoDB數據庫是基于WT存儲引擎的數據庫系統,可以使用WT實用工具包提取數據庫中的數據。
a、下載WT實用工具包,在windows環境下編譯出可執行的wt工具。
北亞企安數據恢復——MongoDB數據恢復
b、使用編譯出來的wt工具清洗MongoDB數據庫的集合文件中的數據。清洗完成后,讀取文件中的數據并寫入到一個dump文件中。
c、將MongoDB數據庫的各個集合文件中的全部可用數據提取出來。
d、重新創建一個MongoDB數據庫,根據提取出的集合文件創建對應數量的空集合。使用wt工具將提取出來的dump文件一一寫入到新創建的空集合中。
e、通過查詢集合中的數據,確認這些集合與元數據庫中集合的對應關系。修改集合名稱,重建索引信息。
通過查詢集合中的記錄,確定記錄類型,從而確定fs.files和fs.chunks集合的位置。修改這兩個集合名稱為xxx.files和xxx.chunks后,重建集合索引,集合恢復完成,可以正常查看其中數據:
北亞企安數據恢復——MongoDB數據恢復
北亞企安數據恢復——MongoDB數據恢復
MongoDB數據庫數據驗證:
將全部集合進行索引重建后,由用戶方對MongoDB數據庫進行查詢驗證,經過驗證用戶方確認數據無誤,認可數據恢復結果。本次數據恢復工作完成。
審核編輯 黃宇
-
數據恢復
+關注
關注
10文章
625瀏覽量
17924 -
數據庫
+關注
關注
7文章
3876瀏覽量
65459 -
mongodb
+關注
關注
0文章
24瀏覽量
428
發布評論請先 登錄
相關推薦
分布式存儲數據恢復—虛擬機上hbase和hive數據庫數據恢復案例
數據庫數據恢復—Windows無法啟動MongoDB服務的數據恢復案例

SqlServer數據恢復—SqlServer數據庫數據恢復案例

數據庫數據恢復—MYSQL數據庫ibdata1文件損壞的數據恢復案例
數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

oracle數據恢復—Oracle數據庫打開報錯的數據恢復案例

數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

評論