MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例
【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- RMAN恢復案例:丟失全部資料檔案恢復
- 完全恢復之所有資料庫檔案丟失資料庫
- 資料庫各種檔案丟失恢復大全。資料庫
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 丟失一個控制檔案並恢復資料庫資料庫
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 資料檔案丟失的恢復
- 資料檔案丟失如何恢復
- RMAN恢復案例:丟失非系統資料檔案恢復
- 【北亞資料庫資料恢復】誤操作導致資料丟失的華為雲mysql資料恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- DATA GUARD主庫丟失資料檔案的恢復(2)
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- 丟失已歸檔日誌檔案下恢復資料庫資料庫
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 【伺服器資料恢復】SAN LUN對映出錯導致檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 電腦檔案丟失資料恢復資料恢復
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB