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

电子说

1.4w人已加入

描述


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

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

数据恢复

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



通常情况下,如果在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工具。

数据恢复

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



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

数据恢复

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

数据恢复

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



5、对全部集合进行索引重建之后,用户方对数据库进行查询验证,经过验证确认数据无误,此次数据恢复工作完成。

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分