环境:
Windows Server 的虚拟机;
MongoDB 数据库。
故障:
未敞开 MongoDB 服务的状况下,将数据库文件拷贝到其余分区后,对原数据库所在分区进行了格式化操作,而后将数据库文件拷回原分区,再重新启动 MongoDB 服务时发现无奈启动。报错截图如下:
管理员分割北亚数据恢复核心寻求帮忙。
MongoDB 数据恢复过程:
在 MongoDB 服务没有敞开的状况下对 MongoDB 数据库文件进行拷贝,会导致 mongod.lock 和 WiredTiger.lock 这 2 个文件拷贝出错。能够在拷贝出的文件中删除这两个文件后再启动服务,这 2 个文件会主动从新生成。
1、北亚数据恢复工程师对管理员拷贝出的文件检测后发现,_mdb_catalog.wt 文件失落。
_mdb_catalog.wt 文件里存储了 MongoDB 中所有汇合的元数据,数据库启动时须要从_mdb_catalog.wt 文件中读取相干的信息。因为此_mdb_catalog.wt 文件失落,数据库无奈获取数据库中汇合对应的 WT table 名字、汇合的创立选项、汇合的索引信息等元数据,数据库无奈启动。
2、北亚数据恢复工程师尝试从文件系统的角度对_mdb_catalog.wt 文件进行复原。
应用北亚数据恢复核心自研软件对数据库分区进行扫描后发现并没有_mdb_catalog.wt 文件的信息。北亚数据恢复工程师又依据 MongoDB 数据库中数据文件的特征值对数据库分区进行扫描,也没有发现_mdb_catalog.wt 相干的数据区域。由此能够判断,_mdb_catalog.wt 文件曾经被彻底笼罩毁坏,无奈复原。
3、从数据库层面设法提取数据。原服务器所部署的 MongoDB 数据库是基于 WiredTiger 存储引擎,北亚数据恢复工程师应用 WiredTiger 实用工具包提取数据库中的数据。
下载 WiredTiger 实用工具包,而后在 windows 环境下编译出可执行的 wt 工具。
4、编译实现后,应用 wt 工具对数据库的汇合文件中的数据进行荡涤回写,荡涤回写实现后间接读取文件中的数据,并写入到一个.dump 文件中。
5、还原数据库环境。北亚数据恢复工程师从新创立一个 MongoDB 数据库,依据提取出的汇合文件,创立对应数量的空集合,而后应用 wt 工具,将提取进去的 dump 文件一一写入到新创建的空集合中。这时就能够通过查问汇合中的数据,确认这些汇合与元数据库中汇合的对应关系,批改汇合名称,重建索引信息。
6、因为原数据库中存在 Gridfs 存储的大字段(文件)汇合,所以通过查问汇合中的记录,确定记录类型,从而确定 fs.files 和 fs.chunks 汇合的地位,而后批改这两个汇合名称别离为 xxx.files 和 xxx.chunks,重建汇合索引,Gridfs 汇合复原实现,能够失常查看其中数据:
数据验证:
北亚数据恢复工程师帮助对全副汇合进行索引重建之后,由管理员对数据库整体进行查问验证,数据无误。