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