Chinaunix首页 | 论坛 | 博客
  • 博客访问: 456157
  • 博文数量: 807
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 8139
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-02 14:16
文章分类

全部博文(807)

文章存档

2026年(80)

2025年(106)

2024年(180)

2023年(218)

2022年(181)

2020年(12)

2019年(24)

我的朋友

分类: 服务器与存储

2025-07-01 11:07:56

MongoDB数据库数据恢复环境:
一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。

MongoDB数据库故障:
工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。
结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”

通常情况下,如果在MongoDB服务尚未关闭的情况下拷贝数据库文件,会导致mongod.lock和WiredTiger.lock这两个文件拷贝出错。如果出现这种情况,可以在拷贝出来的文件中找到这两个文件并删除,再次启动MongoDB数据库,这两个文件会自动重新生成,数据库即可正常启动。
北亚企安数据恢复工程师对拷贝出来的所有文件进行检测,发现迁移出的数据库文件中丢失了_mdb_catalog.wt文件。
_mdb_catalog.wt文件是专门用于存储MongoDB中所有集合元数据的文件,MongoDB数据库启动时必须读取的相关信息都存储于_mdb_catalog.wt文件中。所以,导致数据库启动报错的原因应该是_mdb_catalog.wt文件丢失导致数据库无法获取集合对应的WT table名字、集合的创建选项、集合的索引信息等元数据。

MongoDB数据库数据恢复过程:
1、扫描MongoDB数据库所在分区的底层数据,但是没有扫描到和_mdb_catalog.wt文件有关的信息,使用其他扫描方式进行扫描,仍然无法查找到_mdb_catalog.wt文件相关信息,基本上可以确定该文件已被覆盖,无法通过恢复_mdb_catalog.wt文件的方式来修复数据库。
2、调整MongoDB数据库数据恢复策略。由于故障数据库是基于WiredTiger存储引擎,北亚企安数据恢复工程师在Windows环境下编译出可执行的wt工具。

3、借助编译出的wt工具清洗回写数据库集合文件内所有数据,读取数据结果并写入到文件中。创建一个全新的MongoDB数据库,创建相应数据量的集合,将文件逐一写入集合中,查询数据集并重建索引信息。
4、通过查询集合中的记录,确定记录类型,重建集合索引。集合恢复完成后可以正常查看其中数据:

5、对全部集合进行索引重建之后,用户方对数据库进行查询验证,经过验证确认数据无误,此次数据恢复工作完成。
阅读(20) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~