資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- RMAN恢復案例:丟失全部資料檔案恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- 資料檔案丟失的恢復
- 【北亞資料庫資料恢復】誤操作導致資料丟失的華為雲mysql資料恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 完全恢復之所有資料庫檔案丟失資料庫
- 資料庫各種檔案丟失恢復大全。資料庫
- RMAN恢復案例:丟失非系統資料檔案恢復
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 資料檔案丟失如何恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 恢復案例:歸檔模式下丟失全部資料檔案的恢復模式
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer