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


    MongoDB数据库恢复环境:
    Windows Server服务器;
    MongoDB数据库。

    数据库故障:
    在未关闭MongoDB数据库服务的情况下拷贝数据库文件到其他分区。拷贝完成后,管理员对原数据库分区进行了格式化,然后将数据库文件拷回格式化的原分区,重新启动MongoDB服务时候发现服务无法启动。报错如下:

    管理员联系我们数据恢复中心进行数据恢复操作。

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

    MongoDB数据库数据恢复过程:
    1、数据恢复工程师尝试从文件系统的角度对_mdb_catalog.wt文件进行恢复。
    2、使用数据恢复软件对数据库分区进行扫描,没有发现_mdb_catalog.wt文件的相关信息。根据MongoDB数据库中数据文件的特征值对数据库分区进行扫描,也没有发现_mdb_catalog.wt相关的数据区域。由此判断,_mdb_catalog.wt文件已经被彻底覆盖破坏了,无法恢复。
    3、数据恢复工程师只能设法从数据库的角度提取数据。由于所部署的MongoDB数据库是基于WT存储引擎的,可以使用WT实用工具包提取数据库中的数据。
    4、首先下载WT实用工具包,然后在windows环境下编译出可执行的wt工具。

    5、编译完成后,使用编译好的wt工具对数据库集合文件中的数据进行清洗。清洗完成后,直接读取数据库集合文件中的数据并写入到一个dump文件中。
    6、通过这种方式把数据库各个集合文件中的全部可用数据都提取出来,下一步就是还原数据库环境。
    7、重新创建一个MongoDB数据库,根据提取出的集合文件创建对应数量的空集合。然后使用wt工具将提取出来的dump文件一一写入到新创建的空集合中。
    8、通过查询集合中的数据,确认这些集合与元数据库中集合的对应关系,修改集合名称,重建索引信息。
    9、通过查询集合中的记录,确定记录类型,从而确定fs.files和fs.chunks集合的位置,修改这两个集合名称为xxx.files和xxx.chunks后,重建集合索引,集合恢复完成,可以正常查看其中数据:

    数据验证:
    协助管理员对全部集合进行索引重建之后,管理员对数据库整体进行查询验证,确认数据无误,本次数据恢复工作完成。

  • 相关阅读:
    vue form dynamic validator All In one
    TypeScript api response interface All In One
    closable VS closeable All In One
    macOS 如何开启 WiFi 热点 All In One
    vue css inline style All In One
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)
    牛腩新闻 59 整合添加新闻页 FreeTextBox 富文本编辑器,检测到有潜在危险的 Request.Form 值,DropDownList 的使用
    牛腩新闻 61尾声: error.aspx的使用 防止报错
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (上)
    牛腩新闻 62:尾声续2 asp.net的编译和发布
  • 原文地址:https://www.cnblogs.com/frombyte/p/16336922.html
Copyright © 2020-2023  润新知