mysql-使用事件时间点进行时间点恢复

Dcr 1年前 ⋅ 909 阅读

要指示恢复的开始时间和结束时间,请以 格式指定mysqlbinlog的 --start-datetime和 --stop-datetime选项 。例如,假设恰好在2005年4月20日上午10:00执行了一条删除大表的SQL语句。要还原表和数据,可以还原前一晚的备份,然后执行以下命令: DATETIME

shell> mysqlbinlog --stop-datetime="2005-04-20 9:59:59" \
         /var/log/mysql/bin.123456 | mysql -u root -p

该命令将恢复所有数据,直到该--stop-datetime 选项指定的日期和时间为止。如果直到几小时后才检测到输入的错误SQL语句,您可能还想恢复之后发生的活动。基于此,您可以使用开始日期和时间再次运行mysqlbinlog,如下所示:

shell> mysqlbinlog --start-datetime="2005-04-20 10:01:00" \
         /var/log/mysql/bin.123456 | mysql -u root -p

在此命令中,将从上午10:01开始记录的SQL语句重新执行。恢复前一天晚上的转储文件和两个 mysqlbinlog命令的组合将所有内容恢复到上午10:00之前的一秒,以及从上午10:01开始的所有内容。

要使用这种时间点恢复方法,您应该检查日志以确保为命令指定准确的时间。要显示日志文件内容而不执行它们,请使用以下命令:

shell> mysqlbinlog /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql

然后/tmp/mysql_restore.sql使用文本编辑器打开文件以进行检查。

如果与要排除的语句同时执行多个语句,则 通过指定mysqlbinlog的时间来排除特定的更改 效果不佳。

同时需要注意如果一个数据库实例中,分了很多数据库不建议使用此方法恢复数据,会报数据库创建冲突.

参考文献MySQL文档.

全部评论: 0

    我有话说: