MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境:
MongoDB數(shù)據(jù)庫(kù)部署在一臺(tái)虛擬機(jī)上,虛擬機(jī)操作系統(tǒng)為Windows Server2012。
MongoDB數(shù)據(jù)庫(kù)故障&分析:
由于業(yè)務(wù)發(fā)展需求,需要對(duì)MongoDB數(shù)據(jù)庫(kù)內(nèi)的文件進(jìn)行遷移,在MongoDB服務(wù)開(kāi)啟的狀態(tài)下用戶將數(shù)據(jù)庫(kù)文件復(fù)制到其他分區(qū),將MongoDB數(shù)據(jù)庫(kù)之前所在分區(qū)進(jìn)行了格式化操作。遷移后用戶發(fā)現(xiàn)數(shù)據(jù)庫(kù)文件無(wú)法使用,將數(shù)據(jù)庫(kù)文件拷貝回原分區(qū)后MongoDB數(shù)據(jù)庫(kù)依然無(wú)法正常使用,報(bào)錯(cuò)“Windows無(wú)法啟動(dòng)MongoDB服務(wù)(位于 本地計(jì)算機(jī) 上)錯(cuò)誤1067:進(jìn)程意外終止。”
北亞數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
Tips:在MongoDB服務(wù)開(kāi)啟狀態(tài)下拷貝數(shù)據(jù)庫(kù)文件會(huì)導(dǎo)致mongod.lock和WiredTiger.lock這兩個(gè)文件拷貝出錯(cuò),如果出現(xiàn)這種情況,我們可以在拷貝文件中找到這兩個(gè)文件并刪除,然后再次嘗試啟動(dòng)MongoDB數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)重新啟動(dòng)后會(huì)自動(dòng)重新生成這兩個(gè)文件,數(shù)據(jù)庫(kù)即可正常使用。
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)工程師檢查用戶遷移出的數(shù)據(jù)庫(kù)文件后沒(méi)有找到_mdb_catalog.wt文件。mdb_catalog.wt文件是專門用于存儲(chǔ)MongoDB數(shù)據(jù)庫(kù)中所有集合元數(shù)據(jù)的文件,數(shù)據(jù)庫(kù)啟動(dòng)時(shí)所必須讀取的相關(guān)信息都存儲(chǔ)于mdb_catalog.wt文件中。所以,北亞數(shù)據(jù)恢復(fù)工程師推斷導(dǎo)致MongoDB數(shù)據(jù)庫(kù)啟動(dòng)報(bào)錯(cuò)的原因應(yīng)該是mdb_catalog.wt文件丟失,數(shù)據(jù)庫(kù)無(wú)法讀取集合對(duì)應(yīng)的WT table名字,集合的創(chuàng)建選項(xiàng),集合的索引信息等元數(shù)據(jù)。
MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
1、掃描MongoDB數(shù)據(jù)庫(kù)分區(qū)的底層數(shù)據(jù),結(jié)果沒(méi)有找到關(guān)于_mdb_catalog.wt文件的信息。多次調(diào)整掃描方式進(jìn)行掃描仍然無(wú)法查找到_mdb_catalog.wt的相關(guān)信息,數(shù)據(jù)恢復(fù)工程師判斷該文件已被覆蓋,無(wú)法通過(guò)_mdb_catalog.wt文件修復(fù)MongoDB數(shù)據(jù)庫(kù)。
2、數(shù)據(jù)恢復(fù)工程師調(diào)整策略,由于該MongoDB數(shù)據(jù)庫(kù)是基于WiredTiger存儲(chǔ)引擎,于是北亞數(shù)據(jù)恢復(fù)工程師在Windows環(huán)境下編譯出可執(zhí)行的wt工具。
北亞數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
3、借助編譯后的wt工具清洗回寫MongoDB數(shù)據(jù)庫(kù)集合文件內(nèi)所有數(shù)據(jù),讀取數(shù)據(jù)結(jié)果并寫入到文件中。
4、創(chuàng)建一個(gè)全新的MongoDB數(shù)據(jù)庫(kù)并創(chuàng)建相應(yīng)數(shù)據(jù)量的集合,將文件逐一寫入到集合中,查詢數(shù)據(jù)集并重建索引信息。
5、通過(guò)查詢集合中的記錄,確定記錄類型,重建集合索引,集合恢復(fù)完成后可以正常查看其中數(shù)據(jù):
北亞數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
北亞數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)恢復(fù)
6、協(xié)助用戶對(duì)全部集合進(jìn)行索引重建后,由用戶對(duì)MongoDB數(shù)據(jù)庫(kù)進(jìn)行查詢驗(yàn)證,確定數(shù)據(jù)無(wú)誤,本次數(shù)據(jù)恢復(fù)工作完成。
審核編輯黃昊宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
585瀏覽量
17630 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3846瀏覽量
64685
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論