資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例

北亞資料恢復發表於2023-11-22

MongoDB資料庫資料恢復環境:

一臺Windows Server作業系統的虛擬機器,虛擬機器上部署有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工具。

b、完成wt工具的編譯後,使用編譯出來的wt工具對資料庫的集合檔案中的資料進行清洗回寫。完成清洗回寫操作後,直接讀取檔案中的資料並寫入到一個.dump檔案中。這時資料庫的各個集合檔案中的全部可用資料都提取出來了。

4、重新建立一個MongoDB資料庫,根據提取出來的集合檔案建立對應數量的空集合,然後使用編譯好的wt工具將提取出來的.dump檔案一一寫入到新建立的空集合中。這個時候可以透過查詢集合中的資料確認這些集合與後設資料庫中集合的對應關係。

5、修改集合名稱,重建索引資訊。由於該MongoDB資料庫中存在Gridfs儲存的大欄位(檔案)集合,所以透過查詢集合中的記錄確定記錄型別。確定fs.files和fs.chunks集合的位置後,修改這兩個集合名稱為xxx.files和xxx.chunks,重建集合索引,Gridfs集合恢復完成,這時可以正常檢視到其中資料:

6、協助使用者方將全部集合重建索引後,由使用者方對資料庫整體進行查詢驗證,經過反覆驗證後確認資料無誤,本次資料恢復工作完成。


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

相關文章