MongoDB數據庫數據恢復環境:
一臺Windows Server操作系統虛擬機上部署MongoDB數據庫。
MongoDB數據庫故障:
管理員在未關閉MongoDB服務的情況下拷貝數據庫文件。將MongoDB數據庫文件拷貝到其他分區后,對MongoDB數據庫所在原分區進行了格式化操作。格式化完成后將數據庫文件拷回原分區,并重新啟動MongoDB服務。發現服務無法啟動并報錯。
北亞企安數據恢復—MongoDB數據庫數據恢復
MongoDB數據庫故障檢測:
在MongoDB數據庫服務沒有關閉的情況下拷貝MongoDB數據庫文件,通常會導致mongod.lock文件以及WiredTiger.lock文件拷貝出錯。如果從拷貝出的文件中刪除掉這兩個文件后再次啟動服務,MongoDB數據庫會自行重新生成這2個文件。
北亞企安數據恢復工程師對拷貝出的文件進行檢測,發現_mdb_catalog.wt文件丟失。
_mdb_catalog.wt文件存放MongoDB中所有集合的元數據。數據庫啟動時需要從這個文件中讀取相關的信息。此文件丟失會導致數據庫無法獲取數據庫中集合對應的WT table名字、集合的創建選項、集合的索引信息等元
數據,導致數據庫無法啟動。
MongoDB數據庫數據恢復過程:
1、嘗試從文件系統層面恢復_mdb_catalog.wt文件。
掃描數據庫所在分區并沒有_mdb_catalog.wt文件的信息。根據MongoDB數據庫中數據文件的特征值再次掃描數據庫分區,也沒有發現_mdb_catalog.wt相關的數據區域。基本上可以判斷,_mdb_catalog.wt文件已經被徹底破壞,無法恢復。
2、嘗試從數據庫層面恢復數據。
本案例中的MongoDB數據庫基于WiredTiger存儲引擎,可以使用WiredTiger實用工具包提取數據庫中的數據。
a、下載WiredTiger實用工具包,在windows環境下編譯出可執行的wt工具。
北亞企安數據恢復—MongoDB數據庫數據恢復
b、使用編譯完成的wt工具,清洗回寫MongoDB數據庫的集合文件中的數據。
c、完成數據清洗后讀取文件中的數據,并寫入到一個.dump文件中。通過這種方式將數據庫的各個集合文件中的可用數據提取出來。
d、重新創建一個MongoDB數據庫。根據提取出的集合文件創建對應數量的空集合。使用wt工具將提取出來的.dump文件一一寫入到新創建的空集合中。
e、通過查詢集合中的數據,確認這些集合與元數據庫中集合的對應關系。修改集合名稱,重建索引信息。
由于該MongoDB數據庫中存在Gridfs存儲的大字段(文件)集合,所以可以通過查詢集合中的記錄確定記錄類型,從而確定fs.files和fs.chunks集合的位置。修改這兩個集合名稱為xxx.files和xxx.chunks后,重建集合索引。Gridfs集合恢復完成后就可以正常查看其中數據。
北亞企安數據恢復—MongoDB數據庫數據恢復
北亞企安數據恢復—MongoDB數據庫數據恢復
3、協助用戶方對全部集合進行索引重建之后,由用戶方對數據庫進行查詢驗證,經過驗證確認數據無誤。本次數據恢復工作完成。
審核編輯 黃宇
-
數據恢復
+關注
關注
10文章
642瀏覽量
18057 -
數據庫
+關注
關注
7文章
3905瀏覽量
65872 -
mongodb
+關注
關注
0文章
24瀏覽量
450
發布評論請先 登錄
oracle數據恢復—oracle數據庫誤執行錯誤truncate命令如何恢復數據?

分布式存儲數據恢復—虛擬機上hbase和hive數據庫數據恢復案例
SqlServer數據恢復—SqlServer數據庫數據恢復案例

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

評論