【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例

北亞資料恢復 發表於 2022-06-02
資料庫 MongoDB

MongoDB資料庫恢復環境:

Windows Server伺服器;

MongoDB資料庫。


資料庫故障:

在未關閉MongoDB資料庫服務的情況下拷貝資料庫檔案到其他分割槽。拷貝完成後,管理員對原資料庫分割槽進行了格式化,

然後將資料庫檔案拷回格式化的原分割槽,重新啟動MongoDB服務時候發現服務無法啟動。報錯如下:


【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例


管理員聯絡我們資料恢復中心進行資料恢復操作。


MongoDB資料庫故障檢測:

服務沒有關閉的情況下直接對MongoDB資料庫檔案進行拷貝,會導致拷貝出來的mongod.lock檔案以及WiredTiger.lock文

件錯誤。如果刪除這兩個拷貝出來的檔案,再次啟動服務,MongoDB會自動重新生成這2個檔案。但是檢測後發現在拷貝出

的資料庫檔案中,_mdb_catalog.wt檔案丟失。_mdb_catalog.wt檔案裡儲存了MongoDB資料庫中所有集合的後設資料,數

據庫啟動時需要從這個檔案中讀取相關的資訊。這個檔案的丟失導致資料庫無法獲取資料庫中集合對應的名字、集合的建立

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


MongoDB資料庫資料恢復過程:

1、資料恢復工程師嘗試從檔案系統的角度對_mdb_catalog.wt檔案進行恢復。

2、使用資料恢復軟體對資料庫分割槽進行掃描,沒有發現_mdb_catalog.wt檔案的相關資訊。根據MongoDB資料庫中資料文

件的特徵值對資料庫分割槽進行掃描,也沒有發現_mdb_catalog.wt相關的資料區域。由此判斷,_mdb_catalog.wt檔案已經

被徹底覆蓋破壞了,無法恢復。

3、資料恢復工程師只能設法從資料庫的角度提取資料。由於所部署的MongoDB資料庫是基於WT儲存引擎的,可以使用WT

實用工具包提取資料庫中的資料。

4、首先下載WT實用工具包,然後在windows環境下編譯出可執行的wt工具。


【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例


5、編譯完成後,使用編譯好的wt工具對資料庫集合檔案中的資料進行清洗。清洗完成後,直接讀取資料庫集合檔案中的數

據並寫入到一個dump檔案中。

6、通過這種方式把資料庫各個集合檔案中的全部可用資料都提取出來,下一步就是還原資料庫環境。

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

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

8、通過查詢集合中的資料,確認這些集合與後設資料庫中集合的對應關係,修改集合名稱,重建索引資訊。

9、通過查詢集合中的記錄,確定記錄型別,從而確定fs.files和fs.chunks集合的位置,修改這兩個集合名稱為xxx.files和

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


【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例


【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例


資料驗證:

協助管理員對全部集合進行索引重建之後,管理員對資料庫整體進行查詢驗證,確認資料無誤,本次資料恢復工作完成。


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