【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例
資料庫資料恢復環境:
Windows Server作業系統伺服器,部署MongoDB資料庫。
資料庫故障&分析:
在MongoDB資料庫服務未關閉的情況下,管理員將MongoDB資料庫檔案從原分割槽複製到其他分割槽,然後將MongoDB數
據庫所在原分割槽格式化,格式化完成又將MongoDB資料庫檔案拷回原分割槽,啟動MongoDB服務失敗並報錯。
在MongoDB資料庫服務沒有關閉的情況下,直接複製MongoDB資料庫檔案,mongod.lock和WiredTiger.lock這2個文
件複製出來是有問題的。正確的操作方法是:在複製出的資料庫檔案中將這兩個檔案刪除後再次啟動服務,這2個檔案會
由MongoDB自行重新生成。
透過檢測複製出的MongoDB資料庫檔案發現_mdb_catalog.wt檔案丟失。
_mdb_catalog.wt檔案裡儲存了MongoDB資料庫中所有集合的後設資料,MongoDB資料庫啟動時需要從_mdb_catalog.wt
檔案中讀取相關資訊。如果_mdb_catalog.wt檔案丟失,MongoDB資料庫就無法獲取資料庫中集合對應的名字、集合的創
建選項、集合的索引資訊等後設資料,資料庫無法啟動。
資料庫資料恢復過程:
1、對MongoDB資料庫所涉及的硬碟以只讀方式進行全盤映象備份,後續的資料分析和資料恢復操作都基於映象檔案進行
,避免在恢復資料的過程中對原始資料造成二次破壞。
2、嘗試從檔案系統的層面恢復_mdb_catalog.wt檔案。掃描資料庫分割槽沒有發現和_mdb_catalog.wt檔案相關的資訊。根
據MongoDB資料庫資料檔案的特徵值掃描資料庫分割槽,也沒有發現和_mdb_catalog.wt相關的資料區域。所以可以斷定
_mdb_catalog.wt檔案已經被徹底破壞,無法恢復,只能從資料庫層面恢復資料了。
3、該案例中部署的MongoDB資料庫基於WT儲存引擎,可以使用WT實用工具包提取資料庫中的資料。下載WT實用工具
包並在windows環境下編譯出可執行的wt工具。
4、編譯完成後,北亞企安資料恢復工程師使用wt工具清洗資料庫的集合檔案中的資料,完成清洗後直接讀取檔案中的資料
並寫入到一個dump檔案中。將資料庫的各個集合檔案中的全部可用資料提取出來。
5、建立一個MongoDB資料庫,根據提取出的集合檔案建立對應數量的空集合。使用wt工具將提取出來的dump檔案一一
寫入到新建立的空集合中。
6、透過查詢集合中的資料來確認這些寫入dump檔案的集合與後設資料庫中集合的對應關係,修改集合名稱並重建索引資訊。
7、透過查詢集合中的記錄,確定記錄型別。確定fs.files和fs.chunks集合的位置後,修改這兩個集合名稱為xxx.files和
xxx.chunks後並重建集合索引,集合恢復完成後就可以正常檢視其中資料。
資料庫資料驗證:
協助使用者方工程師對全部集合進行索引重建之後,由使用者對資料庫進行查詢驗證,確認資料無誤,本次資料恢復工作完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2946512/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【vsan資料恢復】vsan資料重構失敗的資料恢復案例資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【北亞資料恢復】sqlserver資料庫被加密的資料恢復案例分享資料恢復SQLServer資料庫加密
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- 資料庫修復資料恢復資料庫資料恢復
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫