MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例

北亞資料恢復發表於2020-09-14

【MongoDB資料庫環境介紹】

近期,資料恢復中心恢復了某地海關的一臺MongoDB資料,首先介紹資料庫環境:

發生資料丟的資料庫位於一臺虛擬機器上,虛擬機器作業系統為WindowsServer 2012。由於業務需要對資料庫內的檔案進行遷移,於是管理員在MongoDB服務開啟狀態下將資料庫檔案複製到其他分割槽,原始資料庫分割槽下的資料進行了格式化操作。但遷移後的資料無法使用,管理員將資料拷貝回原始分割槽後MongoDB服務依然無法使用,並報錯“Windows無法啟動MongoDB服務(位於 本地計算機 上)錯誤1067:程式意外終止。”

【MongoDB資料庫故障情況初檢】

工程師通過客戶的描述進行了初步瞭解,通常情況下,如果MongoDB服務尚未關閉情況下對資料庫檔案進行拷貝回導致致mongod.lock和WiredTiger.lock這兩個檔案拷貝出錯,這種情況出現後可以在拷貝檔案中找到這兩個檔案並刪除,再次啟動MongoDB後資料庫會自動重新生成這兩個檔案,資料庫即可正常啟動。

隨後工程師按照這一預判對客戶遷移出的檔案進行檢測,但出乎意料的是遷移出的資料庫檔案中丟失了_mdb_catalog.wt檔案。

mdb_catalog.wt檔案是專門用於儲存MongoDB中所有集合後設資料的檔案,資料庫啟動時所必須讀取的相關資訊都儲存於改檔案中。所以,導致客戶資料庫啟動報錯的原因應該是丟失了mdb_catalog.wt檔案導致的資料庫無法獲取集合賭贏的WT table名字,集合的建立選項,集合的索引資訊等後設資料,這才導致了資料庫啟動報錯。

【資料庫資料恢復】

資料恢復工程師首先對資料庫分割槽進行底層資料掃描,但並沒有掃描到關於_mdb_catalog.wt檔案的資訊,後經過調整掃描方式多次嘗試,仍然無法查詢相關資訊,確定改檔案已被覆蓋,無法通過回覆_mdb_catalog.wt檔案修復資料庫。

於是資料恢復工程師調整資料恢復策略,由於客戶的資料庫是基於WiredTiger儲存引擎的資料庫系統,在Windows環境下編譯出可執行的wt工具。

藉助編譯後的wt工具對資料庫集合檔案內所有資料清洗回寫,讀取資料結果寫入到檔案中。建立一個全新的MongoDB資料庫,建立相應資料量的集合,將檔案逐一寫入集合中,查詢資料集並重建索引資訊。

通過查詢集合中的記錄,確定記錄型別,重建集合索引,集合恢復完成,可以正常檢視其中資料:

【檢驗資料並確認資料恢復成功】

協助客戶對全部集合進行索引重建之後,客戶對資料庫整體進行查詢驗證,資料無誤,此次資料恢復圓滿成功。


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

相關文章