0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MongoDB數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫文件損壞的數(shù)據(jù)恢復(fù)案例

Frombyte ? 來源:Frombyte ? 作者:Frombyte ? 2024-04-23 14:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境:
一臺(tái)Windows Server操作系統(tǒng)服務(wù)器,服務(wù)器上部署MongoDB數(shù)據(jù)庫。

MongoDB數(shù)據(jù)庫故障&檢測:
工作人員在未關(guān)閉MongoDB數(shù)據(jù)庫服務(wù)的情況下,將數(shù)據(jù)庫文件拷貝到其他分區(qū)??截愅瓿珊髮⒃璏ongoDB數(shù)據(jù)庫所在分區(qū)進(jìn)行了格式化操作,然后將數(shù)據(jù)庫文件拷回原分區(qū),重新啟動(dòng)MongoDB服務(wù),服務(wù)無法啟動(dòng)。報(bào)錯(cuò)如下:

poYBAGQ-Pg6AWHFxAAJ9VHkTNrk678.png

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



Tips:在MongoDB服務(wù)沒有關(guān)閉的情況下,直接拷貝MongoDB數(shù)據(jù)庫文件會(huì)導(dǎo)致mongod.lock文件以及WiredTiger.lock文件拷貝出錯(cuò)。這種情況下只要在拷貝出的文件中刪除這兩個(gè)文件,重新啟動(dòng)MongoDB服務(wù)后MongoDB會(huì)自動(dòng)重新生成這2個(gè)文件。
對(duì)工作人員拷貝出的文件進(jìn)行檢測后發(fā)現(xiàn),拷貝出的數(shù)據(jù)庫文件中沒有發(fā)現(xiàn)_mdb_catalog.wt文件。
Tips:_mdb_catalog.wt文件里存儲(chǔ)了MongoDB數(shù)據(jù)庫中所有集合的元數(shù)據(jù),MongoDB數(shù)據(jù)庫啟動(dòng)時(shí)需要從_mdb_catalog.wt文件中讀取相關(guān)信息。_mdb_catalog.wt文件丟失會(huì)導(dǎo)致MongoDB數(shù)據(jù)庫無法獲取數(shù)據(jù)庫中集合對(duì)應(yīng)的名字、集合的創(chuàng)建選項(xiàng)、集合的索引信息等元數(shù)據(jù),MongoDB數(shù)據(jù)庫無法啟動(dòng)。

MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、將服務(wù)器中所有磁盤編號(hào)后取出,初步檢測后沒有發(fā)現(xiàn)明顯的硬件故障,都可以正常讀取。以只讀方式將所有磁盤進(jìn)行扇區(qū)級(jí)全盤鏡像,鏡像完成后將所有詞磁盤按照編號(hào)還原到原服務(wù)器中,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對(duì)原磁盤數(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ù)文件的特征值掃描MongoDB數(shù)據(jù)庫所在分區(qū),也沒有發(fā)現(xiàn)和_mdb_catalog.wt相關(guān)的數(shù)據(jù)區(qū)域。這種情況下可以判斷_mdb_catalog.wt文件已經(jīng)被徹底破壞,無法恢復(fù)。
3、嘗試從數(shù)據(jù)庫層面恢復(fù)數(shù)據(jù)。
本案例中部署的MongoDB數(shù)據(jù)庫是基于WT存儲(chǔ)引擎的數(shù)據(jù)庫系統(tǒng),可以使用WT實(shí)用工具包提取數(shù)據(jù)庫中的數(shù)據(jù)。
a、下載WT實(shí)用工具包,在windows環(huán)境下編譯出可執(zhí)行的wt工具。

poYBAGQ-Ph-AMmzIAAC7iEG0z_I132.png

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



b、使用編譯出來的wt工具清洗MongoDB數(shù)據(jù)庫的集合文件中的數(shù)據(jù)。清洗完成后,讀取文件中的數(shù)據(jù)并寫入到一個(gè)dump文件中。
c、將MongoDB數(shù)據(jù)庫的各個(gè)集合文件中的全部可用數(shù)據(jù)提取出來。
d、重新創(chuàng)建一個(gè)MongoDB數(shù)據(jù)庫,根據(jù)提取出的集合文件創(chuàng)建對(duì)應(yīng)數(shù)量的空集合。使用wt工具將提取出來的dump文件一一寫入到新創(chuàng)建的空集合中。
e、通過查詢集合中的數(shù)據(jù),確認(rèn)這些集合與元數(shù)據(jù)庫中集合的對(duì)應(yīng)關(guān)系。修改集合名稱,重建索引信息。
通過查詢集合中的記錄,確定記錄類型,從而確定fs.files和fs.chunks集合的位置。修改這兩個(gè)集合名稱為xxx.files和xxx.chunks后,重建集合索引,集合恢復(fù)完成,可以正常查看其中數(shù)據(jù):

poYBAGQ-PimASfrhAAD_HobNY0g256.png

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

pYYBAGQ-PimAFxmBAAFG3HpaTRk463.png

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


MongoDB數(shù)據(jù)庫數(shù)據(jù)驗(yàn)證:
將全部集合進(jìn)行索引重建后,由用戶方對(duì)MongoDB數(shù)據(jù)庫進(jìn)行查詢驗(yàn)證,經(jīng)過驗(yàn)證用戶方確認(rèn)數(shù)據(jù)無誤,認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。本次數(shù)據(jù)恢復(fù)工作完成。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)恢復(fù)

    關(guān)注

    10

    文章

    645

    瀏覽量

    18073
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3907

    瀏覽量

    65937
  • mongodb
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    453
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)數(shù)據(jù)

    oracle數(shù)據(jù)庫誤執(zhí)行truncate命令導(dǎo)致數(shù)據(jù)丟失是一種常見情況。通常情況下,oracle數(shù)據(jù)庫誤操作刪除數(shù)據(jù)只需要通過備份恢復(fù)數(shù)據(jù)
    的頭像 發(fā)表于 06-05 16:01 ?266次閱讀
    oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—oracle<b class='flag-5'>數(shù)據(jù)庫</b>誤執(zhí)行錯(cuò)誤truncate命令如何<b class='flag-5'>恢復(fù)數(shù)據(jù)</b>?

    分布式存儲(chǔ)數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

    分布式存儲(chǔ)數(shù)據(jù)恢復(fù)環(huán)境: 16臺(tái)某品牌R730xd服務(wù)器節(jié)點(diǎn),每臺(tái)服務(wù)器節(jié)點(diǎn)上有數(shù)臺(tái)虛擬機(jī)。 虛擬機(jī)上部署Hbase和Hive數(shù)據(jù)庫。 分布式存儲(chǔ)故障: 數(shù)據(jù)庫底層
    的頭像 發(fā)表于 04-17 11:05 ?195次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動(dòng)的數(shù)據(jù)恢復(fù)

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)Windows Server操作系統(tǒng)虛擬機(jī)上部署MongoDB
    的頭像 發(fā)表于 04-09 11:34 ?261次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>——<b class='flag-5'>MongoDB</b><b class='flag-5'>數(shù)據(jù)庫文件</b>拷貝后服務(wù)無法啟動(dòng)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Windows無法啟動(dòng)MongoDB服務(wù)的數(shù)據(jù)恢復(fù)案例

    某單位一臺(tái)MongoDB數(shù)據(jù)庫由于業(yè)務(wù)需求進(jìn)行了數(shù)據(jù)遷移,數(shù)據(jù)庫遷移后提示:“Windows無法啟動(dòng)MongoDB服務(wù)(位于 本地計(jì)算機(jī) 上
    的頭像 發(fā)表于 02-13 12:44 ?289次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Windows無法啟動(dòng)<b class='flag-5'>MongoDB</b>服務(wù)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    虛擬化數(shù)據(jù)恢復(fù)—誤還原快照的數(shù)據(jù)恢復(fù)案例

    虛擬化數(shù)據(jù)恢復(fù)環(huán)境&故障: vmfs文件系統(tǒng),存儲(chǔ)的數(shù)據(jù)是SqlServer數(shù)據(jù)庫及其他辦公文件
    的頭像 發(fā)表于 02-07 11:09 ?349次閱讀

    SqlServer數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

    一塊硬盤上存放的SqlServer數(shù)據(jù)庫,windows server操作系統(tǒng)+NTFS文件系統(tǒng)。由于誤操作導(dǎo)致分區(qū)損壞,需要恢復(fù)硬盤里的SqlServer
    的頭像 發(fā)表于 01-09 11:15 ?393次閱讀
    SqlServer<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—SqlServer<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫ibdata1文件損壞數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫故障: mysql數(shù)據(jù)庫文件ibdata1、MYI、MYD損壞。 故障表現(xiàn):1、數(shù)據(jù)庫無法進(jìn)行查詢等操作;2、使用mysqlcheck和myisamchk無法修復(fù)
    的頭像 發(fā)表于 12-09 11:05 ?572次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)庫碎片恢復(fù)SQLserver數(shù)據(jù)庫

    一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫,有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)庫
    的頭像 發(fā)表于 10-31 13:21 ?650次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—通過拼接<b class='flag-5'>數(shù)據(jù)庫</b>碎片<b class='flag-5'>恢復(fù)</b>SQLserver<b class='flag-5'>數(shù)據(jù)庫</b>

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Oracle ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例

    方案: 數(shù)據(jù)庫數(shù)據(jù)恢復(fù)工程師對(duì)組成ASM磁盤組的磁盤進(jìn)行分析。對(duì)ASM元數(shù)據(jù)進(jìn)行分析發(fā)現(xiàn)ASM存儲(chǔ)元數(shù)據(jù)
    的頭像 發(fā)表于 10-28 11:26 ?421次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Oracle ASM實(shí)例無法掛載的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫打開報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    和data pump工具無法使用,查詢告警日志并分析報(bào)錯(cuò),確認(rèn)發(fā)生上述錯(cuò)誤的原因就是sysaux01.dbf文件損壞。由于該文件損壞,從數(shù)據(jù)庫
    的頭像 發(fā)表于 10-17 13:20 ?498次閱讀
    oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Oracle<b class='flag-5'>數(shù)據(jù)庫</b>打開報(bào)錯(cuò)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    Oracle數(shù)據(jù)恢復(fù)—異常斷電后Oracle數(shù)據(jù)庫報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    Oracle數(shù)據(jù)庫的在線文件,需要恢復(fù)zxfg用戶的數(shù)據(jù)。 Oracle數(shù)據(jù)庫恢復(fù)方案:
    的頭像 發(fā)表于 09-30 13:31 ?687次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—異常斷電后Oracle<b class='flag-5'>數(shù)據(jù)庫</b>啟<b class='flag-5'>庫</b>報(bào)錯(cuò)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫文件system01.dbf損壞數(shù)據(jù)恢復(fù)案例

    打開oracle數(shù)據(jù)庫報(bào)錯(cuò)“system01.dbf需要更多的恢復(fù)來保持一致性,數(shù)據(jù)庫無法打開”。
    的頭像 發(fā)表于 09-21 14:25 ?927次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Oracle<b class='flag-5'>數(shù)據(jù)庫文件</b>system01.dbf<b class='flag-5'>損壞</b>的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫故障: SQL Server附加數(shù)據(jù)庫出現(xiàn)錯(cuò)誤823,附加數(shù)據(jù)庫失敗。數(shù)據(jù)庫沒有備份,無法通過備份恢復(fù)數(shù)據(jù)庫。
    的頭像 發(fā)表于 09-20 11:46 ?666次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—SQL Server<b class='flag-5'>數(shù)據(jù)庫</b>出現(xiàn)823錯(cuò)誤的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫數(shù)據(jù)無法被讀取。 經(jīng)過數(shù)據(jù)庫數(shù)據(jù)恢復(fù)工程師的初步檢測,發(fā)現(xiàn)SQL Server
    的頭像 發(fā)表于 07-26 11:27 ?698次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—SqlServer<b class='flag-5'>數(shù)據(jù)庫</b>底層File Record被截?cái)酁?的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫所在分區(qū)空間不足報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    Server數(shù)據(jù)庫故障: 存放SQL Server數(shù)據(jù)庫的D盤分區(qū)容量不足,管理員在E盤中生成了一個(gè).ndf的文件并且將數(shù)據(jù)庫路徑指向E盤繼續(xù)使用。
    的頭像 發(fā)表于 07-10 13:54 ?895次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品