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

    文章

    458

    浏览量

    16990
  • 数据库
    +关注

    关注

    7

    文章

    3639

    浏览量

    63736
  • mongodb
    +关注

    关注

    0

    文章

    22

    浏览量

    348
收藏 人收藏

    评论

    相关推荐

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

    数据库故障: 数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。
    的头像 发表于 05-08 11:43 260次阅读
    <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 192次阅读

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

    。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清
    的头像 发表于 04-11 15:38 317次阅读
    <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>案例

    MySQL数据库是如何应对故障恢复数据恢复回滚的问题呢?

    今天这篇文章,我想聊一聊MySQL数据库是如何应对故障恢复,与数据恢复回滚的问题。一个最基本的数据库,应当可以做到以下几点
    的头像 发表于 11-27 10:04 596次阅读
    MySQL<b class='flag-5'>数据库</b>是如何应对故障<b class='flag-5'>恢复</b>与<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>回滚的问题呢?

    数据库数据恢复MongoDB数据库服务无法启动并报错数据恢复案例

    一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库
    的头像 发表于 11-22 14:48 357次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>—<b class='flag-5'>MongoDB</b><b class='flag-5'>数据库</b>服务无法启动并报错<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    navicat怎么导出数据库文件

    导出数据库文件数据库管理中的一个重要操作,而Navicat是一款流行的数据库管理工具,具有强大的导出功能。在本文中,我将详细介绍如何使用Navicat导出数据库文件,并在步骤中提供所
    的头像 发表于 11-21 10:53 6476次阅读

    数据库数据恢复——MongoDB数据库介绍和数据恢复案例

    MongoDB数据库是文档数据存储库,将文档存储在集合之中,不是像MySQL一样的关系型数据库
    的头像 发表于 11-08 15:04 591次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>——<b class='flag-5'>MongoDB</b><b class='flag-5'>数据库</b>介绍和<b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    如何在HarmonyOS对数据库进行备份,恢复与加密

    出现问题,开发者可以使用恢复功能,将数据库恢复到之前的状态,重新对数据库进行操作。 在数据库被篡改、删除、或者设备断电场景下,
    发表于 11-07 08:57

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案
    的头像 发表于 09-21 14:34 579次阅读

    数据库数据恢复-Oracle ASM故障数据恢复案例

    数据库数据恢复环境: Oracle数据库ASM磁盘组有4块成员盘。 数据库故障&分析: Oracle
    的头像 发表于 08-11 15:27 958次阅读
    <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数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。用户急需恢复zxfg用户下的数据
    的头像 发表于 08-03 15:10 467次阅读
    <b class='flag-5'>数据库</b><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>案例

    数据库数据恢复-Syabse数据库数据恢复案例

    数据库恢复环境: Sybase版本:SQL Anywhere 8.0。 数据库故障: 数据库所在的设备意外断电后,数据库无法启动。
    的头像 发表于 07-28 14:38 764次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>-Syabse<b class='flag-5'>数据库</b><b class='flag-5'>数据</b><b class='flag-5'>恢复</b>案例

    数据库数据恢复-Oracle数据库文件出现坏块的数据恢复案例

    打开oracle数据库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 北亚企安数据恢复工程师检测
    的头像 发表于 07-18 15:10 489次阅读
    <b class='flag-5'>数据库</b><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>案例

    PetaExpress云数据库 MongoDB(mongodb数据库)优势

    MongoDB数据模型是针对文档的。所谓文档是一种类似JSON的结构。可以简单理解,MongoDB存储在数据库中的各种JSON,在MongoDB
    的头像 发表于 07-14 10:06 385次阅读