MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境:
一臺(tái)操作系統(tǒng)為Windows Server的虛擬機(jī)上部署MongoDB數(shù)據(jù)庫(kù)。
MongoDB數(shù)據(jù)庫(kù)故障:
工作人員在MongoDB服務(wù)仍然開(kāi)啟的情況下將MongoDB數(shù)據(jù)庫(kù)文件拷貝到其他分區(qū),數(shù)據(jù)復(fù)制完成后將MongoDB數(shù)據(jù)庫(kù)原先所在的分區(qū)進(jìn)行了格式化操作。
結(jié)果發(fā)現(xiàn)拷貝過(guò)去的數(shù)據(jù)無(wú)法使用。管理員又將數(shù)據(jù)拷貝回原始分區(qū),MongoDB服務(wù)仍然無(wú)法使用,報(bào)錯(cuò)“Windows無(wú)法啟動(dòng)MongoDB服務(wù)(位于 本地計(jì)算機(jī) 上)錯(cuò)誤1067:進(jìn)程意外終止。”

北亞企安數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
通常情況下,如果在MongoDB服務(wù)尚未關(guān)閉的情況下拷貝數(shù)據(jù)庫(kù)文件,會(huì)導(dǎo)致mongod.lock和WiredTiger.lock這兩個(gè)文件拷貝出錯(cuò)。如果出現(xiàn)這種情況,可以在拷貝出來(lái)的文件中找到這兩個(gè)文件并刪除,再次啟動(dòng)MongoDB數(shù)據(jù)庫(kù),這兩個(gè)文件會(huì)自動(dòng)重新生成,數(shù)據(jù)庫(kù)即可正常啟動(dòng)。
北亞企安數(shù)據(jù)恢復(fù)工程師對(duì)拷貝出來(lái)的所有文件進(jìn)行檢測(cè),發(fā)現(xiàn)遷移出的數(shù)據(jù)庫(kù)文件中丟失了_mdb_catalog.wt文件。
_mdb_catalog.wt文件是專門(mén)用于存儲(chǔ)MongoDB中所有集合元數(shù)據(jù)的文件,MongoDB數(shù)據(jù)庫(kù)啟動(dòng)時(shí)必須讀取的相關(guān)信息都存儲(chǔ)于_mdb_catalog.wt文件中。所以,導(dǎo)致數(shù)據(jù)庫(kù)啟動(dòng)報(bào)錯(cuò)的原因應(yīng)該是_mdb_catalog.wt文件丟失導(dǎo)致數(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ù),但是沒(méi)有掃描到和_mdb_catalog.wt文件有關(guān)的信息,使用其他掃描方式進(jìn)行掃描,仍然無(wú)法查找到_mdb_catalog.wt文件相關(guān)信息,基本上可以確定該文件已被覆蓋,無(wú)法通過(guò)恢復(fù)_mdb_catalog.wt文件的方式來(lái)修復(fù)數(shù)據(jù)庫(kù)。
2、調(diào)整MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)策略。由于故障數(shù)據(jù)庫(kù)是基于WiredTiger存儲(chǔ)引擎,北亞企安數(shù)據(jù)恢復(fù)工程師在Windows環(huán)境下編譯出可執(zhí)行的wt工具。

北亞企安數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
3、借助編譯出的wt工具清洗回寫(xiě)數(shù)據(jù)庫(kù)集合文件內(nèi)所有數(shù)據(jù),讀取數(shù)據(jù)結(jié)果并寫(xiě)入到文件中。創(chuàng)建一個(gè)全新的MongoDB數(shù)據(jù)庫(kù),創(chuàng)建相應(yīng)數(shù)據(jù)量的集合,將文件逐一寫(xiě)入集合中,查詢數(shù)據(jù)集并重建索引信息。
4、通過(guò)查詢集合中的記錄,確定記錄類型,重建集合索引。集合恢復(fù)完成后可以正常查看其中數(shù)據(jù):

北亞企安數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)

北亞企安數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
5、對(duì)全部集合進(jìn)行索引重建之后,用戶方對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢驗(yàn)證,經(jīng)過(guò)驗(yàn)證確認(rèn)數(shù)據(jù)無(wú)誤,此次數(shù)據(jù)恢復(fù)工作完成。
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
712瀏覽量
18983 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
4019瀏覽量
68331
發(fā)布評(píng)論請(qǐng)先 登錄
MySQL數(shù)據(jù)庫(kù)備份恢復(fù)方式對(duì)比
Oracle數(shù)據(jù)庫(kù)ASM實(shí)例無(wú)法掛載的數(shù)據(jù)恢復(fù)案例
深度解讀MySQL數(shù)據(jù)庫(kù)備份恢復(fù)策略
國(guó)產(chǎn)數(shù)據(jù)庫(kù)的AI戰(zhàn)事
mysql數(shù)據(jù)恢復(fù)—mysql數(shù)據(jù)庫(kù)表被truncate的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫(kù)性能優(yōu)化指南
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫(kù)故障的數(shù)據(jù)恢復(fù)案例
Oracle數(shù)據(jù)恢復(fù)—格式化分區(qū)導(dǎo)致Oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例
三款主流國(guó)產(chǎn)數(shù)據(jù)庫(kù)的技術(shù)特點(diǎn)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)?
oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫(kù)誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)數(shù)據(jù)?
SQLSERVER數(shù)據(jù)庫(kù)是什么
MySQL數(shù)據(jù)庫(kù)是什么
分布式存儲(chǔ)數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫(kù)文件拷貝后服務(wù)無(wú)法啟動(dòng)的數(shù)據(jù)恢復(fù)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)文件丟失的數(shù)據(jù)恢復(fù)案例
評(píng)論