中文/EN

新闻资讯

MongoDB数据恢复—MongoDB数据库文件损坏的恢复案例

来源:新闻资讯   |   发布时间:2024-04-27 05:18:52  |  点击率: 1

  

  一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新再启动MongoDB服务,服务无法启动。报错如下:

  Tips:在MongoDB服务没有关闭的情况下,直接拷贝MongoDB数据库文件会导致mongod.lock文件以及WiredTiger.lock文件拷贝出错。这种情况下只要在拷贝出的文件中删除这两个文件,重新再启动MongoDB服务后MongoDB会自动重新生成这2个文件。对工作人员拷贝出的文件进行仔细的检测后发现,拷贝出的数据库文件中未曾发现_mdb_catalog.wt文件。Tips:_mdb_catalog.wt文件里存储了MongoDB数据库中所有集合的元数据,MongoDB数据库启动时需要从_mdb_catalog.wt文件中读取有关信息。_mdb_catalog.wt文件丢失会导致MongoDB数据库无法获取数据库中集合对应的名字、集合的创建选项、集合的索引信息等元数据,MongoDB数据库无法启动。MongoDB数据库数据恢复过程:1、将服务器中所有磁盘编号后取出,初步检测后未曾发现明显的硬件故障,都可以正常读取。以只读方式将所有磁盘进行扇区级全盘镜像,镜像完成后将所有词磁盘按照编号还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原磁盘数据造成二次破坏。

  2、尝试从文件系统层面恢复_mdb_catalog.wt文件。扫描数据库分区并未曾发现_mdb_catalog.wt文件相关信息。根据MongoDB数据库中数据文件的特征值扫描MongoDB数据库所在分区,也未曾发现和_mdb_catalog.wt相关的数据区域。这种情况下能判断_mdb_catalog.wt文件已经被彻底破坏,没办法恢复。3、尝试从数据库层面恢复数据。本案例中部署的MongoDB数据库是基于WT存储引擎的数据库系统,能够正常的使用WT实用工具包提取数据库中的数据。a、下载WT实用工具包,在windows环境下编译出可执行的wt工具。

  b、使用编译出来的wt工具清洗MongoDB数据库的集合文件中的数据。清洗完成后,读取文件中的数据并写入到一个dump文件中。c、将MongoDB数据库的各个集合文件中的全部可用数据提取出来。d、重新创建一个MongoDB数据库,根据提取出的集合文件创建对应数量的空集合。使用wt工具将提取出来的dump文件一一写入到新创建的空集合中。e、通过查询集合中的数据,确认这些集合与元数据库中集合的对应关系。修改集合名称,重建索引信息。通过查询集合中的记录,确定记录类型,从而确定fs.files和fs.chunks集合的位置。修改这两个集合名称为xxx.files和xxx.chunks后,重建集合索引,集合恢复完成,可以正常查看其中数据:

  MongoDB数据库数据验证:将全部集合进行索引重建后,由用户方对MongoDB数据库进行查询验证,经过验证用户方确认数据无误,认可数据恢复结果。本次数据恢复工作完成。

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  拜登签字同意“强买强卖”法案后,那些靠TikTok创作为生的美国人怒了

  越南一工厂因订单不足,给工人无薪放假,遭遇集体大罢工,许多女工表示:这是逼我们辞职

  新消费日报 雷军车展现场接待王传福;辛巴直播权限将于5月20日解封;石头科技一季度净利润同比增长95.23%……