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

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

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

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

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

掃碼添加小助手

加入工程師交流群

數(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ū),啟動(dòng)MongoDB服務(wù)失敗并報(bào)錯(cuò)。

poYBAGQ-Pg6AWHFxAAJ9VHkTNrk678.png

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

在MongoDB數(shù)據(jù)庫服務(wù)沒有關(guān)閉的情況下,直接拷貝MongoDB數(shù)據(jù)庫文件,mongod.lock和WiredTiger.lock這2個(gè)文件拷貝出來是有問題的。正確的操作方法是:在拷貝出的數(shù)據(jù)庫文件中將這兩個(gè)文件刪除后再次啟動(dòng)服務(wù),這2個(gè)文件會由MongoDB自行重新生成。

通過檢測拷貝出的MongoDB數(shù)據(jù)庫文件發(fā)現(xiàn)_mdb_catalog.wt文件丟失。

_mdb_catalog.wt文件里存儲了MongoDB數(shù)據(jù)庫中所有集合的元數(shù)據(jù),MongoDB數(shù)據(jù)庫啟動(dòng)時(shí)需要從_mdb_catalog.wt文件中讀取相關(guān)信息。如果_mdb_catalog.wt文件丟失,MongoDB數(shù)據(jù)庫就無法獲取數(shù)據(jù)庫中集合對應(yīng)的名字、集合的創(chuàng)建選項(xiàng)、集合的索引信息等元數(shù)據(jù),數(shù)據(jù)庫無法啟動(dòng)。

數(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í)用工具包提取數(shù)據(jù)庫中的數(shù)據(jù)。下載WT實(shí)用工具包并在windows環(huán)境下編譯出可執(zhí)行的wt工具。

poYBAGQ-Ph-AMmzIAAC7iEG0z_I132.png

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

4、編譯完成后,北亞企安數(shù)據(jù)恢復(fù)工程師使用wt工具清洗數(shù)據(jù)庫的集合文件中的數(shù)據(jù),完成清洗后直接讀取文件中的數(shù)據(jù)并寫入到一個(gè)dump文件中。將數(shù)據(jù)庫的各個(gè)集合文件中的全部可用數(shù)據(jù)提取出來。

5、創(chuàng)建一個(gè)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集合的位置后,修改這兩個(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ù)

數(shù)據(jù)庫數(shù)據(jù)驗(yàn)證:

協(xié)助用戶方工程師對全部集合進(jìn)行索引重建之后,由用戶對數(shù)據(jù)庫進(jìn)行查詢驗(yàn)證,確認(rèn)數(shù)據(jù)無誤,本次數(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)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7118

    瀏覽量

    125225
  • 數(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人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)庫故障: SQL Server數(shù)據(jù)庫被加密,無法使用。 數(shù)據(jù)庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?27次閱讀
    <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>被加密如何<b class='flag-5'>恢復(fù)數(shù)據(jù)</b>?

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

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 一臺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ù)案例

    某單位一臺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),存儲的數(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ù)—ORACLE常見故障的數(shù)據(jù)恢復(fù)可行性分析

    Oracle數(shù)據(jù)庫常見故障表現(xiàn): 1、ORACLE數(shù)據(jù)庫無法啟動(dòng)或無法正常工作。 2、ORACLE ASM存儲破壞。 3、ORACLE數(shù)據(jù)文件丟失。 4、ORACLE數(shù)據(jù)文件
    的頭像 發(fā)表于 12-10 11:35 ?419次閱讀

    數(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)行在存儲上的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ù)工程師對組成ASM磁盤組的磁盤進(jìn)行分析。對ASM元數(shù)據(jù)進(jìn)行分析發(fā)現(xiàn)ASM存儲元數(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位工程師會員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品