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

时间:2020-03-06 14:19:29  来源:igfitidea点击:

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

解决方案

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

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

根据Docs的介绍,二进制日志只是基于给定参考点执行的一系列命令。因此,当我们执行" DROP DATABASE"时,不要去"哦,要删除数据库,我们现在应该备份,以防万一",它只是在最后一个binlog中写入了" DROP DATABASE"。恢复并不像向后播放磁带那样简单。

我们需要做的是从最后一个已知商品中恢复数据库,并应用在该恢复点和DROP命令之间发生的二进制日志。

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

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

没有什么比完整的文件系统备份更好了。而且我们至少应该让它们退回去。

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

mysqlbinlog the_log_file> update.sql

虽然我认为我们可能必须编辑该文件才能删除所有不想再次执行的内容(例如drop database语句)。

祝你好运!