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

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

3天内不再提示

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

Frombyte 来源:Frombyte 作者:Frombyte 2023-04-18 14:53 次阅读

数据库数据恢复环境:

Windows Server操作系统服务器,部署MongoDB数据库。

数据库故障&分析:

在MongoDB数据库服务未关闭的情况下,管理员将MongoDB数据库文件从原分区拷贝到其他分区,然后将MongoDB数据库所在原分区格式化,格式化完成又将MongoDB数据库文件拷回原分区,启动MongoDB服务失败并报错。

poYBAGQ-Pg6AWHFxAAJ9VHkTNrk678.png

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

在MongoDB数据库服务没有关闭的情况下,直接拷贝MongoDB数据库文件,mongod.lock和WiredTiger.lock这2个文件拷贝出来是有问题的。正确的操作方法是:在拷贝出的数据库文件中将这两个文件删除后再次启动服务,这2个文件会由MongoDB自行重新生成。

通过检测拷贝出的MongoDB数据库文件发现_mdb_catalog.wt文件丢失。

_mdb_catalog.wt文件里存储了MongoDB数据库中所有集合的元数据,MongoDB数据库启动时需要从_mdb_catalog.wt文件中读取相关信息。如果_mdb_catalog.wt文件丢失,MongoDB数据库就无法获取数据库中集合对应的名字、集合的创建选项、集合的索引信息等元数据,数据库无法启动。

数据库数据恢复过程:

1、对MongoDB数据库所涉及的硬盘以只读方式进行全盘镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免在恢复数据的过程中对原始数据造成二次破坏。

2、尝试从文件系统的层面恢复_mdb_catalog.wt文件。扫描数据库分区没有发现和_mdb_catalog.wt文件相关的信息。根据MongoDB数据库数据文件的特征值扫描数据库分区,也没有发现和_mdb_catalog.wt相关的数据区域。所以可以断定_mdb_catalog.wt文件已经被彻底破坏,无法恢复,只能从数据库层面恢复数据了。

3、该案例中部署的MongoDB数据库基于WT存储引擎,可以使用WT实用工具包提取数据库中的数据。下载WT实用工具包并在windows环境下编译出可执行的wt工具。

poYBAGQ-Ph-AMmzIAAC7iEG0z_I132.png

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

4、编译完成后,北亚企安数据恢复工程师使用wt工具清洗数据库的集合文件中的数据,完成清洗后直接读取文件中的数据并写入到一个dump文件中。将数据库的各个集合文件中的全部可用数据提取出来。

5、创建一个MongoDB数据库,根据提取出的集合文件创建对应数量的空集合。使用wt工具将提取出来的dump文件一一写入到新创建的空集合中。

6、通过查询集合中的数据来确认这些写入dump文件的集合与元数据库中集合的对应关系,修改集合名称并重建索引信息。

7、通过查询集合中的记录,确定记录类型。确定fs.files和fs.chunks集合的位置后,修改这两个集合名称为xxx.files和xxx.chunks后并重建集合索引,集合恢复完成后就可以正常查看其中数据。

poYBAGQ-PimASfrhAAD_HobNY0g256.png

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

pYYBAGQ-PimAFxmBAAFG3HpaTRk463.png

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

数据库数据验证:

协助用户方工程师对全部集合进行索引重建之后,由用户对数据库进行查询验证,确认数据无误,本次数据恢复工作完成。

审核编辑:汤梓红

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

    关注

    37

    文章

    6288

    浏览量

    121890
  • 数据恢复
    +关注

    关注

    10

    文章

    418

    浏览量

    16883
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63373
  • mongodb
    +关注

    关注

    0

    文章

    22

    浏览量

    332
收藏 人收藏

    评论

    相关推荐

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

    的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB
    的头像 发表于 04-23 14:48 79次阅读
    <b class='flag-5'>MongoDB</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><b class='flag-5'>恢复</b>案例

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

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

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

    一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库
    的头像 发表于 11-22 14:48 282次阅读
    <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:57 1393次阅读

    navicat怎么导出数据库文件

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

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

    MongoDB数据库是文档数据存储库,将文档存储在集合之中,不是像MySQL一样的关系型数据库
    的头像 发表于 11-08 15:04 472次阅读
    <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 469次阅读

    数据库数据恢复-SQL SERVER数据库MDF (NDF)或LDF损坏数据恢复方案

    SQL SERVER数据库故障类型: SQL SERVER数据库MDF(NDF)或LDF损坏。 SQL SERVER数据库故障原因: 1、
    的头像 发表于 09-20 15:00 510次阅读

    SQLite数据库文件头部特征

    SQLite数据库文件头部特征 SQLite是一种轻量级关系型数据库管理系统,被广泛应用于移动设备、桌面应用程序和Web应用程序中。SQLite在本地存储数据时使用数据库文件,该
    的头像 发表于 08-28 17:15 752次阅读

    数据库数据恢复-Oracle数据库文件损坏数据恢复案例

    打开Oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。用户急需恢复zxfg用户下的数据
    的头像 发表于 08-03 15:10 420次阅读
    <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>案例

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

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

    数据库数据恢复】SQL Server数据库无法读取的数据恢复案例

    经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件
    的头像 发表于 06-20 14:50 498次阅读
    【<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>案例