7.5.2 Point-in-Time Recovery Using Event Positions 使用Event Positions来基于时间的恢复
代替特定的日期和时间,mysqlbinlog 的–start-position and –stop-position 选
能被用于特定的log positions.它们工作和start和stop date选项类似,
除了制定log position 号而不是日期。 使用positions 可以让你更精确的关于日志部分的恢复,
尤其是如果很多的事务发生在相同的时间 比如破坏性得到SQL语句,
确定 position numbers, 在一段时间范围内(不需要的事务被执行)运行mysqlbinlog,
重定向结果到一个文本文件,可以这么做:
shell> mysqlbinlog –start-datetime=”2005-04-20 9:55:00”
–stop-datetime=”2005-04-20 10:05:00”
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
这个命令创建一个小的文本文件 在/tmp目录下, 包含了SQL语句,在有害的SQL语句执行的范围附近。
用文本文件打开,寻找你不想要重复的语句。切丁binary log 中的positiosn 用于stopping
然后继续恢复和记录它们 的Posistions,恢复先前的备份后:
shell> mysqlbinlog –stop-position=368312 /var/log/mysql/bin.123456
| mysql -u root -p
shell> mysqlbinlog –start-position=368315 /var/log/mysql/bin.123456
| mysql -u root -p
第一个命令恢复所有的事务到指定的stop position,第2条命令恢复所有的事务从给定的 starting position
到binary log的结尾。因为 mysqlbinlog 的输出 包含了SET TIMESTAMP 语句在每个记录的SQL语句前,
恢复的数据和相关的MySQL logs会影响原始的时间,之前事务执行的时间。
SET TIMESTAMP=1438179219/!/;
UPDATE QRTZ_SCHEDULER_STATE SET LAST_CHECKIN_TIME = 1438179219567 WHERE SCHED_NAME =
‘ReportControlScheduler’ AND INSTANCE_NAME = ‘auto’