0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MongoDB数据恢复—MongoDB数据库文件损坏的数据恢复案例

Frombyte 来源:Frombyte 作者:Frombyte 2024-04-23 14:48 次阅读

服务器数据恢复环境:
一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。

MongoDB数据库故障&检测
工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。报错如下:

poYBAGQ-Pg6AWHFxAAJ9VHkTNrk678.png

北亚企安数据恢复——MongoDB数据恢复



Tips:在MongoDB服务没有关闭的情况下,直接拷贝MongoDB数据库文件会导致mongod.lock文件以及WiredTiger.lock文件拷贝出错。这种情况下只要在拷贝出的文件中删除这两个文件,重新启动MongoDB服务后MongoDB会自动重新生成这2个文件。
对工作人员拷贝出的文件进行检测后发现,拷贝出的数据库文件中没有发现_mdb_catalog.wt文件。
Tips:_mdb_catalog.wt文件里存储了MongoDB数据库中所有集合的元数据,MongoDB数据库启动时需要从_mdb_catalog.wt文件中读取相关信息。_mdb_catalog.wt文件丢失会导致MongoDB数据库无法获取数据库中集合对应的名字、集合的创建选项、集合的索引信息等元数据,MongoDB数据库无法启动。

MongoDB数据库数据恢复过程:
1、将服务器中所有磁盘编号后取出,初步检测后没有发现明显的硬件故障,都可以正常读取。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有词磁盘按照编号还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原磁盘数据造成二次破坏。
2、尝试从文件系统层面恢复_mdb_catalog.wt文件。扫描数据库分区并没有发现_mdb_catalog.wt文件相关信息。根据MongoDB数据库中数据文件的特征值扫描MongoDB数据库所在分区,也没有发现和_mdb_catalog.wt相关的数据区域。这种情况下可以判断_mdb_catalog.wt文件已经被彻底破坏,无法恢复。
3、尝试从数据库层面恢复数据。
本案例中部署的MongoDB数据库是基于WT存储引擎的数据库系统,可以使用WT实用工具包提取数据库中的数据。
a、下载WT实用工具包,在windows环境下编译出可执行的wt工具。

poYBAGQ-Ph-AMmzIAAC7iEG0z_I132.png

北亚企安数据恢复——MongoDB数据恢复



b、使用编译出来的wt工具清洗MongoDB数据库的集合文件中的数据。清洗完成后,读取文件中的数据并写入到一个dump文件中。
c、将MongoDB数据库的各个集合文件中的全部可用数据提取出来。
d、重新创建一个MongoDB数据库,根据提取出的集合文件创建对应数量的空集合。使用wt工具将提取出来的dump文件一一写入到新创建的空集合中。
e、通过查询集合中的数据,确认这些集合与元数据库中集合的对应关系。修改集合名称,重建索引信息。
通过查询集合中的记录,确定记录类型,从而确定fs.files和fs.chunks集合的位置。修改这两个集合名称为xxx.files和xxx.chunks后,重建集合索引,集合恢复完成,可以正常查看其中数据:

poYBAGQ-PimASfrhAAD_HobNY0g256.png

北亚企安数据恢复——MongoDB数据恢复

pYYBAGQ-PimAFxmBAAFG3HpaTRk463.png

北亚企安数据恢复——MongoDB数据恢复


MongoDB数据库数据验证:
将全部集合进行索引重建后,由用户方对MongoDB数据库进行查询验证,经过验证用户方确认数据无误,认可数据恢复结果。本次数据恢复工作完成。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据恢复
    +关注

    关注

    10

    文章

    565

    浏览量

    17429
  • 数据库
    +关注

    关注

    7

    文章

    3792

    浏览量

    64340
  • mongodb
    +关注

    关注

    0

    文章

    22

    浏览量

    364
收藏 人收藏

    评论

    相关推荐

    数据库数据恢复—MYSQL数据库ibdata1文件损坏数据恢复案例

    mysql数据库故障: mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复
    的头像 发表于 12-09 11:05 107次阅读

    Sybase数据恢复—Sybase数据库无法启动怎么恢复数据

    数据库数据恢复工程师经过检测,发现Sybase数据库出现故障的原因是:异常断电造成Sybase数据库无法回写正常
    的头像 发表于 11-30 16:45 104次阅读
    Sybase<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—Sybase<b class='flag-5'>数据库</b>无法启动怎么<b class='flag-5'>恢复数据</b>?

    数据库数据恢复—通过拼接数据库碎片恢复SQLserver数据库

    一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库
    的头像 发表于 10-31 13:21 192次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—通过拼接<b class='flag-5'>数据库</b>碎片<b class='flag-5'>恢复</b>SQLserver<b class='flag-5'>数据库</b>

    数据库数据恢复—Oracle ASM实例无法挂载的数据恢复案例

    方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据
    的头像 发表于 10-28 11:26 147次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—Oracle ASM实例无法挂载的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    oracle数据恢复—Oracle数据库打开报错的数据恢复案例

    和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库
    的头像 发表于 10-17 13:20 216次阅读
    oracle<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—Oracle<b class='flag-5'>数据库</b>打开报错的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    Oracle数据恢复—异常断电后Oracle数据库报错的数据恢复案例

    Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案:
    的头像 发表于 09-30 13:31 292次阅读
    Oracle<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—异常断电后Oracle<b class='flag-5'>数据库</b>启<b class='flag-5'>库</b>报错的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    数据库数据恢复—Oracle数据库文件system01.dbf损坏数据恢复案例

    打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。
    的头像 发表于 09-21 14:25 309次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—Oracle<b class='flag-5'>数据库文件</b>system01.dbf<b class='flag-5'>损坏</b>的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例

    SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库
    的头像 发表于 09-20 11:46 330次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—SQL Server<b class='flag-5'>数据库</b>出现823错误的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    Oracle数据恢复—Oracle数据库delete删除的数据恢复方法

    删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle
    的头像 发表于 09-11 11:45 359次阅读

    数据库数据恢复—SqlServer数据库底层File Record被截断为0的数据恢复案例

    SQL Server数据库数据无法被读取。 经过数据库数据恢复工程师的初步检测,发现SQL Server
    的头像 发表于 07-26 11:27 375次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—SqlServer<b class='flag-5'>数据库</b>底层File Record被截断为0的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    数据库数据恢复—SQL Server数据库所在分区空间不足报错的数据恢复案例

    Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。
    的头像 发表于 07-10 13:54 475次阅读

    数据库数据恢复—raid5阵列上层Sql Server数据库数据恢复案例

    数据库故障: 数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。
    的头像 发表于 05-08 11:43 502次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—raid5阵列上层Sql Server<b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    数据库数据恢复—ndf文件大小变为0KB的数据恢复案例

    存储设备损坏导致存储中SQL Server数据库崩溃。对数据库文件进行恢复后,用户发现有4个ndf文件的大小变为0KB。该SQL Serve
    的头像 发表于 05-07 11:19 414次阅读

    数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例

    。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个,表的数量有3000左右。数据库文件丢失原因还没
    的头像 发表于 04-11 15:38 870次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—Sql Server<b class='flag-5'>数据库文件</b>丢失的<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例