8

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

4

5 回答 5

9

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

根据 Docs,binlog 只是基于给定参考点执行的一系列命令。所以当你执行“DROP DATABASE”时,而不是“哦,他正在删除数据库,我们现在应该备份以防万一”,它只是在最后一个 binlog 中写入了一个“DROP DATABASE”。恢复并不像倒放磁带那么简单。

您需要做的是从上次已知良好状态恢复数据库,并应用在该恢复点和 DROP 命令之间发生的二进制日志。

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

如何确定使用哪些二进制日志,尚不清楚。

没有什么比拥有完整的文件系统备份更好的了。你至少应该有这些可以回退。

于 2008-09-18T00:15:01.200 回答
5

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

于 2008-09-18T00:02:48.140 回答
5

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

mysqlbinlog the_log_file > update.sql

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

祝你好运!

于 2008-09-18T00:20:20.533 回答
0

没有备份没有派对。

所以我会回答:

为了再也不会遇到这种情况,请安装超简单且功能强大的 automysqlbackup(如果您使用的是 linux):

sudo apt-get install automysqlbackup

配置它:

sudo nano /etc/default/automysqlbackup

然后将其内容自动上传到 Dropbox、ubuntu 之一或类似的。

只有这样才能快乐地生活:)

于 2013-10-03T09:11:29.900 回答
0

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

于 2015-02-09T14:58:32.390 回答