一、恢复思路
以innobackupex全备为基础,mysqlbinlog解析增量binlog,实现全备以来的任意时间点增量恢复。大致过程:
1.innobackupex实现全库数据恢复,在xtrabackup_binlog_info文件中找到起始binlog以及对应的position;
2.根据需要恢复的范围,利用mysqlbinlog抽取binlog,并应用到数据库里;
3.解析出来的binlog应用完毕后,确认数据是否正确,然后利用mysqldump将需要的特定数据导出,如果需要覆盖正式库的数据,建议不要覆盖导入,在导入前先备份正式库数据,并将表rename,最后再导入恢复的数据。
二、注意事项
1.binlog里记录着历史操作的时间点,可以根据此信息判断binlog内容是否有用,例如
# at 703
#181213 13:27:53 server id 128 end_log_pos 750 CRC32 0xc89acd78 Table_map: `sam`.`test5` mapped to number 74
2.解析binlog时切勿用–base64-out选项抑制解析内容中的BINLOG代码,这将会忽略row格式的DML binlog,只保留明文记录的DDL。例如以下BINLOG '处看起来像是乱码,其实这正是在应用binlog时需要执行的内容。
#181213 13:27:53 server id 128 end_log_pos 796 CRC32 0x39acfff0 Update_rows: table id 74 flags: STMT_END_F