mongodb 数据库修复指南

发布时间丨2024-07-29 15:45:14作者丨zhaomeng浏览丨1201


mongodb 数据库修复指南

原因:mongodb 数据库因为断电导致数据库损坏,服务无法启动,但是mongodb 的数据库的数据都在本地(这个是重点,docker 安装一定要挂载/data/db到宿主机)

1. 找一台windows电脑,安装与损坏的mongodb相同版本的数据库;
2. 将备份的损坏的mongodb的数据文件目录拷贝到windows的其他文件夹下备用;
3. 在安装好mongodb服务上面创建一个数据库(或者直接使用客户端连接数据库,在客户端控制台使用如下命令)

use ntb;创建数据库
db.ntc.insert({hi: "helo"})  创建一个数据集合
db.ntc.stats()  查看当前创建的集合的信息,找到uri这个key(很重要)


操作步骤:

  a. 将事前备份的损坏的数据文件以colletion开头的文件复制到excel表中
  
  b. 使用mongo命令创建与colletion相同数据量的集合(集合名可以collection_数字的格式),同时使用stats查看获取创建的集合的uri一并写入到execl中形成对应的损坏的集合和创建集合的对应关系;
  
  c. 将上一步中形成的对应的关系表,使用本地命令的方式将损坏的文件名批量更新为新创建的集合名称
  
  d. 关闭当前windows上面的服务(一定要关闭)再把重命名后的损坏的文件集合复制到windows上的数据data目录中覆盖相同名称的集合
  
  e. 重启mongodb服务并执行如下命令进行数据的恢复

mongod --dbpath /var/lib/mongodb --repair  /var/lib/mongodb是实际的数据库文件路径


  f.  修复成功之后再执行如下的命令重启mongodb服务

mongod --dbpath /var/lib/mongodb


 g.  修复成功,但是需要自己区分每个表的数据并重新建立数据库名和表名关系及索引
 
 [参考文档(https://www.mongodb.com/community/forums/t/recover-mongodb-data-from-physical-storage/108217/5)

推荐文章:逆向反调试及参数加密