在ext4上意外删除了一个Mongodb数据文件夹,如何最好地恢复数据



从ext4恢复已删除文件的最佳/最快/最安全的方法是什么?

规格:

  • 磁盘是1TB SSHD(hibrid HDD+SSD),分区也使用LUKS加密(版本1)加密
  • Mongodb正在使用WiredTiger作为存储引擎

此外,如果我管理文件的部分恢复,我可以对mongo的集合进行部分恢复吗?

步骤1:文件恢复

使用extundlete:快速恢复文件

sudo umount /path/to/disk && 
sudo extundelete /path/to/disk --restore-directory /path/to/dir -o /restored/path/
  • /path/to/disk表示磁盘路径,例如/dev/sdd/dev/mapping/label
  • /path/to/dir表示要恢复的相对于磁盘安装点的路径,例如,如果/dev/ssd将安装在/mnt/label/,则完整路径为/mnt/label/path/to/dir,相对路径为/path/to/dir

使用extundlete恢复的优点:

  • 重量轻
  • 如果磁盘已安装或加密,则可以工作
  • 很快,它给出了答案,如果可以在几秒钟内恢复,并且它以超过100MB/s的速度写入恢复的文件

一般中数据恢复的缺点

  • 不能保证成功
  • 如果在已删除的扇区中写入了新数据,则无法工作(因此,请尽快卸载磁盘,并在进行任何恢复之前对损坏的磁盘进行映像)

步骤2:如果缺少数据,则修复mongodb

备份在此步骤之前,mongod --repair可以删除好的数据

未测试,但据我所知,如果数据库不完整,mongod --repair应该有助于修复数据库,否则您可以使用继续恢复WiredTiger

  • 从损坏的mongodb安装中恢复WiredTiger集合

最新更新