【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例
MongoDB資料庫恢復環境:
Windows Server伺服器;
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工具。
5、編譯完成後,使用編譯好的wt工具對資料庫集合檔案中的資料進行清洗。清洗完成後,直接讀取資料庫集合檔案中的數
據並寫入到一個dump檔案中。
6、透過這種方式把資料庫各個集合檔案中的全部可用資料都提取出來,下一步就是還原資料庫環境。
7、重新建立一個MongoDB資料庫,根據提取出的集合檔案建立對應數量的空集合。然後使用wt工具將提取出來的dump文
件一一寫入到新建立的空集合中。
8、透過查詢集合中的資料,確認這些集合與後設資料庫中集合的對應關係,修改集合名稱,重建索引資訊。
9、透過查詢集合中的記錄,確定記錄型別,從而確定fs.files和fs.chunks集合的位置,修改這兩個集合名稱為xxx.files和
xxx.chunks後,重建集合索引,集合恢復完成,可以正常檢視其中資料:
資料驗證:
協助管理員對全部集合進行索引重建之後,管理員對資料庫整體進行查詢驗證,確認資料無誤,本次資料恢復工作完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2898559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- 【伺服器資料恢復】某品牌ProLiant伺服器raid癱瘓資料庫檔案損壞的資料恢復伺服器資料恢復AI資料庫
- MSSQL資料庫資料恢復案例:ndf檔案大小變為0KB恢復資料SQL資料庫資料恢復
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【伺服器資料恢復】伺服器reiserfs檔案系統損壞的資料恢復案例伺服器資料恢復
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 資料底層損壞的恢復方法—拼碎片恢復資料
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle