7.5.2 Point-in-Time Recovery Using Event Positions

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’

你可能感兴趣的:(7.5.2 Point-in-Time Recovery Using Event Positions)