要指示恢复的开始和结束时间
,请以
格式指定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 指定时间来排除特定更改 效果不佳。