如何使用mysql二进制日志从drop database命令恢复?

时间:2008-09-17 23:59:57

标签: mysql database recovery

如何恢复使用“drop database”命令删除的mysql数据库?我可以访问二进制日志,这可以使这种类型的回滚成为可能。

5 个答案:

答案 0 :(得分:8)

文档很糟糕。它暗示DROP DATABASE是可恢复的,但仅在奇怪的条件下我不熟悉http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

根据文档,binlogs只是基于给定参考点执行的一系列命令。因此,当您执行“DROP DATABASE”时,而不是“哦,他会删除数据库,我们现在应该备份以防万一”它只是写了一个“DROP DATABASE”到最后一个binlog。恢复并不像向后播放磁带那么简单。

您需要做的是从最后已知的商品中恢复数据库,并应用在该恢复点和DROP命令之间发生的binlog。

http://dev.mysql.com/doc/refman/5.0/en/recovery-from-backups.html

如何确定使用哪些binlog,不清楚。

没有比完整文件系统备份更好的了。你应该至少让这些回归。

答案 1 :(得分:5)

如果你没有数据库的备份,那你就不走运了。 删除数据库是永久性的。

答案 2 :(得分:5)

假设您有备份,二进制日志会保存自该备份以来发生的事情。使用mysqlbinlog实用程序,您可以执行以下操作:

mysqlbinlog the_log_file> update.sql

虽然我认为您可能需要编辑该文件以删除任何您不想再次执行的内容(例如drop database语句)。

祝你好运!

答案 3 :(得分:0)

没有备份没有派对。

所以我会回答:

永远不再适合你的情况安装超简单和超强大的automysqlbackup(如果你在linux上):

sudo apt-get install automysqlbackup

配置它:

sudo nano / etc / default / automysqlbackup

然后将其内容自动上传到dropbox,ubuntu one或类似内容。

只有这样才能幸福地生活:)

答案 4 :(得分:0)

为了补充Kent Fredric的答案,如果您在创建数据库后使用二进制日志记录,则可以回滚drop database命令。