【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例

北亞資料恢復發表於2023-04-18

資料庫資料恢復環境:

Windows Server作業系統伺服器,部署MongoDB資料庫。


資料庫故障&分析:

在MongoDB資料庫服務未關閉的情況下,管理員將MongoDB資料庫檔案從原分割槽複製到其他分割槽,然後將MongoDB數

據庫所在原分割槽格式化,格式化完成又將MongoDB資料庫檔案拷回原分割槽,啟動MongoDB服務失敗並報錯。


在MongoDB資料庫服務沒有關閉的情況下,直接複製MongoDB資料庫檔案,mongod.lock和WiredTiger.lock這2個文

件複製出來是有問題的。正確的操作方法是:在複製出的資料庫檔案中將這兩個檔案刪除後再次啟動服務,這2個檔案會

由MongoDB自行重新生成。

透過檢測複製出的MongoDB資料庫檔案發現_mdb_catalog.wt檔案丟失。

_mdb_catalog.wt檔案裡儲存了MongoDB資料庫中所有集合的後設資料,MongoDB資料庫啟動時需要從_mdb_catalog.wt

檔案中讀取相關資訊。如果_mdb_catalog.wt檔案丟失,MongoDB資料庫就無法獲取資料庫中集合對應的名字、集合的創

建選項、集合的索引資訊等後設資料,資料庫無法啟動。


資料庫資料恢復過程:

1、對MongoDB資料庫所涉及的硬碟以只讀方式進行全盤映象備份,後續的資料分析和資料恢復操作都基於映象檔案進行

,避免在恢復資料的過程中對原始資料造成二次破壞。

2、嘗試從檔案系統的層面恢復_mdb_catalog.wt檔案。掃描資料庫分割槽沒有發現和_mdb_catalog.wt檔案相關的資訊。根

據MongoDB資料庫資料檔案的特徵值掃描資料庫分割槽,也沒有發現和_mdb_catalog.wt相關的資料區域。所以可以斷定

_mdb_catalog.wt檔案已經被徹底破壞,無法恢復,只能從資料庫層面恢復資料了。

3、該案例中部署的MongoDB資料庫基於WT儲存引擎,可以使用WT實用工具包提取資料庫中的資料。下載WT實用工具

包並在windows環境下編譯出可執行的wt工具。


4、編譯完成後,北亞企安資料恢復工程師使用wt工具清洗資料庫的集合檔案中的資料,完成清洗後直接讀取檔案中的資料

並寫入到一個dump檔案中。將資料庫的各個集合檔案中的全部可用資料提取出來。

5、建立一個MongoDB資料庫,根據提取出的集合檔案建立對應數量的空集合。使用wt工具將提取出來的dump檔案一一

寫入到新建立的空集合中。

6、透過查詢集合中的資料來確認這些寫入dump檔案的集合與後設資料庫中集合的對應關係,修改集合名稱並重建索引資訊。

7、透過查詢集合中的記錄,確定記錄型別。確定fs.files和fs.chunks集合的位置後,修改這兩個集合名稱為xxx.files和

xxx.chunks後並重建集合索引,集合恢復完成後就可以正常檢視其中資料。



資料庫資料驗證:

協助使用者方工程師對全部集合進行索引重建之後,由使用者對資料庫進行查詢驗證,確認資料無誤,本次資料恢復工作完成。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2946512/,如需轉載,請註明出處,否則將追究法律責任。

相關文章