数据库数据恢复环境:
Windows Server 操作系统服务器,部署 MongoDB 数据库。
数据库故障 & 剖析:
在 MongoDB 数据库服务未敞开的状况下,管理员将 MongoDB 数据库文件从原分区拷贝到其余分区,而后将 MongoDB 数据库所在原分区格式化,格式化实现又将 MongoDB 数据库文件拷回原分区,启动 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 工具。
4、编译实现后,北亚企安数据恢复工程师应用 wt 工具荡涤数据库的汇合文件中的数据,实现荡涤后间接读取文件中的数据并写入到一个 dump 文件中。将数据库的各个汇合文件中的全副可用数据提取进去。
5、创立一个 MongoDB 数据库,依据提取出的汇合文件创建对应数量的空集合。应用 wt 工具将提取进去的 dump 文件一一写入到新创建的空集合中。
6、通过查问汇合中的数据来确认这些写入 dump 文件的汇合与元数据库中汇合的对应关系,批改汇合名称并重建索引信息。
7、通过查问汇合中的记录,确定记录类型。确定 fs.files 和 fs.chunks 汇合的地位后,批改这两个汇合名称为 xxx.files 和 xxx.chunks 后并重建汇合索引,汇合复原实现后就能够失常查看其中数据。
数据库数据验证:
帮助用户方工程师对全副汇合进行索引重建之后,由用户对数据库进行查问验证,确认数据无误,本次数据恢复工作实现。