【问题标题】:How to recover a dropped MongoDB database?如何恢复丢失的 MongoDB 数据库?
【发布时间】:2011-07-08 02:40:15
【问题描述】:

如果有人不小心删除了一个 MongoDB 数据库,但执行了 db.dropDatabase(),他如何恢复数据库?

在 MongoDB 中删除数据库很简单,命令 db.dropDatabase() 不会删除其中的所有数据,而是将其标记为删除,因此使用 drop 命令后数据库的大小不会改变,我认为应该有一些方法可以删除要删除的标记。有人能告诉我怎么做吗?

【问题讨论】:

  • 删除数据库是一种破坏性操作——没有取消删除按钮。您应该确保定期进行备份并从这些备份中恢复作为您的“恢复”。
  • @Blackmoon,也许 imcoddy 只是出于好奇而问这个问题。
  • @TTT 谢谢,我其实想问一下在执行 db.dropDatabase() 命令后如何恢复 MongoDB 数据库,也许我的问题足够具体......
  • 这是一个非常好的问题!到目前为止,没有人能够回答!
  • @FelipeMicaroniLalli 我试图重现这种情况并发布了答案。

标签: mongodb database


【解决方案1】:

我试图重现你所做的。备份数据库后,我使用 db.dropDatabase() 杀死了一个数据库:-) 数据库名称是“gacheater”。在删除 mongodb 文件夹之前包含 3 个文件(数据库非空):

  • gacheater.ns
  • gacheater.1
  • gacheater.2

删除这些文件后消失了。因此,我认为 mongodb 确实删除了您的数据

所以你唯一的选择就是尝试从文件系统恢复文件

PS:MacOS 10.5、MongoDB 1.8.2

【讨论】:

  • 那些是数据库文件——是的,MongoDB 删除了数据库文件——没有“撤消”,除非你有数据库备份
【解决方案2】:

AFAIK 大多数系统只是通过标志将文件标记为已删除,而不是实际覆盖它。可以使用标准工具恢复文件...

http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html

这些可能更容易使用

http://extundelete.sourceforge.net/

正如指出的那样,备份是不可替代的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2021-01-14
    相关资源
    最近更新 更多