數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境:
Windows Server操作系統(tǒng)服務(wù)器,部署MongoDB數(shù)據(jù)庫。
數(shù)據(jù)庫故障&分析:
在MongoDB數(shù)據(jù)庫服務(wù)未關(guān)閉的情況下,管理員將MongoDB數(shù)據(jù)庫文件從原分區(qū)拷貝到其他分區(qū),然后將MongoDB數(shù)據(jù)庫所在原分區(qū)格式化,格式化完成又將MongoDB數(shù)據(jù)庫文件拷回原分區(qū),啟動MongoDB服務(wù)失敗并報錯。
	
北亞企安數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
在MongoDB數(shù)據(jù)庫服務(wù)沒有關(guān)閉的情況下,直接拷貝MongoDB數(shù)據(jù)庫文件,mongod.lock和WiredTiger.lock這2個文件拷貝出來是有問題的。正確的操作方法是:在拷貝出的數(shù)據(jù)庫文件中將這兩個文件刪除后再次啟動服務(wù),這2個文件會由MongoDB自行重新生成。
通過檢測拷貝出的MongoDB數(shù)據(jù)庫文件發(fā)現(xiàn)_mdb_catalog.wt文件丟失。
_mdb_catalog.wt文件里存儲了MongoDB數(shù)據(jù)庫中所有集合的元數(shù)據(jù),MongoDB數(shù)據(jù)庫啟動時需要從_mdb_catalog.wt文件中讀取相關(guān)信息。如果_mdb_catalog.wt文件丟失,MongoDB數(shù)據(jù)庫就無法獲取數(shù)據(jù)庫中集合對應(yīng)的名字、集合的創(chuàng)建選項、集合的索引信息等元數(shù)據(jù),數(shù)據(jù)庫無法啟動。
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、對MongoDB數(shù)據(jù)庫所涉及的硬盤以只讀方式進(jìn)行全盤鏡像備份,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免在恢復(fù)數(shù)據(jù)的過程中對原始數(shù)據(jù)造成二次破壞。
2、嘗試從文件系統(tǒng)的層面恢復(fù)_mdb_catalog.wt文件。掃描數(shù)據(jù)庫分區(qū)沒有發(fā)現(xiàn)和_mdb_catalog.wt文件相關(guān)的信息。根據(jù)MongoDB數(shù)據(jù)庫數(shù)據(jù)文件的特征值掃描數(shù)據(jù)庫分區(qū),也沒有發(fā)現(xiàn)和_mdb_catalog.wt相關(guān)的數(shù)據(jù)區(qū)域。所以可以斷定_mdb_catalog.wt文件已經(jīng)被徹底破壞,無法恢復(fù),只能從數(shù)據(jù)庫層面恢復(fù)數(shù)據(jù)了。
3、該案例中部署的MongoDB數(shù)據(jù)庫基于WT存儲引擎,可以使用WT實用工具包提取數(shù)據(jù)庫中的數(shù)據(jù)。下載WT實用工具包并在windows環(huán)境下編譯出可執(zhí)行的wt工具。
	
北亞企安數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
4、編譯完成后,北亞企安數(shù)據(jù)恢復(fù)工程師使用wt工具清洗數(shù)據(jù)庫的集合文件中的數(shù)據(jù),完成清洗后直接讀取文件中的數(shù)據(jù)并寫入到一個dump文件中。將數(shù)據(jù)庫的各個集合文件中的全部可用數(shù)據(jù)提取出來。
5、創(chuàng)建一個MongoDB數(shù)據(jù)庫,根據(jù)提取出的集合文件創(chuàng)建對應(yīng)數(shù)量的空集合。使用wt工具將提取出來的dump文件一一寫入到新創(chuàng)建的空集合中。
6、通過查詢集合中的數(shù)據(jù)來確認(rèn)這些寫入dump文件的集合與元數(shù)據(jù)庫中集合的對應(yīng)關(guān)系,修改集合名稱并重建索引信息。
7、通過查詢集合中的記錄,確定記錄類型。確定fs.files和fs.chunks集合的位置后,修改這兩個集合名稱為xxx.files和xxx.chunks后并重建集合索引,集合恢復(fù)完成后就可以正常查看其中數(shù)據(jù)。
	
北亞企安數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
	
北亞企安數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
數(shù)據(jù)庫數(shù)據(jù)驗證:
協(xié)助用戶方工程師對全部集合進(jìn)行索引重建之后,由用戶對數(shù)據(jù)庫進(jìn)行查詢驗證,確認(rèn)數(shù)據(jù)無誤,本次數(shù)據(jù)恢復(fù)工作完成。
審核編輯:湯梓紅
- 
                                操作系統(tǒng)
                                +關(guān)注
關(guān)注
37文章
7278瀏覽量
128263 - 
                                數(shù)據(jù)恢復(fù)
                                +關(guān)注
關(guān)注
10文章
678瀏覽量
18644 - 
                                數(shù)據(jù)庫
                                +關(guān)注
關(guān)注
7文章
3987瀏覽量
67596 - 
                                mongodb
                                +關(guān)注
關(guān)注
0文章
24瀏覽量
526 
發(fā)布評論請先 登錄
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫故障的數(shù)據(jù)恢復(fù)案例
    
Oracle數(shù)據(jù)恢復(fù)—格式化分區(qū)導(dǎo)致Oracle數(shù)據(jù)庫報錯的數(shù)據(jù)恢復(fù)案例
    
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫文件丟失的數(shù)據(jù)恢復(fù)案例
    
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?
    
oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫誤執(zhí)行錯誤truncate命令如何恢復(fù)數(shù)據(jù)?
    
分布式存儲數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動的數(shù)據(jù)恢復(fù)
    
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server附加數(shù)據(jù)庫提示“錯誤 823”的數(shù)據(jù)恢復(fù)案例
    
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Windows無法啟動MongoDB服務(wù)的數(shù)據(jù)恢復(fù)案例
    
虛擬化數(shù)據(jù)恢復(fù)—誤還原快照的數(shù)據(jù)恢復(fù)案例
SqlServer數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例
    
如何使用cmp進(jìn)行數(shù)據(jù)庫管理的技巧
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—ORACLE常見故障的數(shù)據(jù)恢復(fù)可行性分析
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例
oracle數(shù)據(jù)恢復(fù)—存儲掉盤導(dǎo)致Oracle數(shù)據(jù)庫文件大小變?yōu)?kb的數(shù)據(jù)恢復(fù)案例
    
          
        
        
MongoDB數(shù)據(jù)庫文件損壞的數(shù)據(jù)恢復(fù)案例
                
 
           
            
            
                
            
評論