MySQL 8.0 参考手册  / 第 7 章备份与恢复  / 7.5 时间点(增量)恢复  /  7.5.1 使用事件时间的时间点恢复

7.5.1 使用事件时间的时间点恢复

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

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

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

$> 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 开始的所有内容。

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

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

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

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