MongoDB数据库恢复案例
最新动态来源:本站原创点击数:12更新时间:2025/7/1
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文件的方式来修复数据库。
3、借助编译出的wt工具清洗回写数据库集合文件内所有数据,读取数据结果并写入到文件中。创建一个全新的MongoDB数据库,创建相应数据量的集合,将文件逐一写入集合中,查询数据集并重建索引信息。
4、通过查询集合中的记录,确定记录类型,重建集合索引。集合恢复完成后可以正常查看其中数据:
5、对全部集合进行索引重建之后,用户方对数据库进行查询验证,经过验证确认数据无误,此次数据恢复工作完成。