说明:
6月11号下午,研发不小心执行update语句,将一个表数据全部更新,表有15万条数据,需尽快恢复数据。
恢复过程:
1,使用腾讯云的极速恢复到时间点
2,使用binlog2sql工具
使用1,数据库是早上0点备份,要回放0点到现在的全部sql,执行会比较慢
使用2,binlog2sql,生成15万条update回滚语句,执行一直很慢
数据量小用binlog2sql,很快,一旦10万以上,就太慢,有没有其他更快的恢复数据方法,在网上了一下,MyFlash恢复大量数据比较快,
其恢复数据原理好binlog2sql,有区别,能快速恢复数据。
MyFlash使用:
1,安装MyFlash
2,根据时间查出执行 SQL的gtid或者是start-pos和end-pos
测试:update stan set update_time=now(),更新全表数据,共176654条
|
这里-A 120,就是要把后面的信息打印出来,如end-pos的信息
通过 head -n 20 /data/61.txt 和 tail -n 160 /data/61.txt ,找到对应的start-pos和end-pos
|
这样621.txt,就是完整的更新信息
grep 'stan' 60.txt |wc -l ,计数stan个数:176656,多2个表名:因为,binlog包含下面信息,看信息是完整的:
# update stan set update_time=now()
# at 233673808
#210625 15:26:36 server id 219103 end_log_pos 233673919 CRC32 0x269a4e74 Table_map: `db_test`.`stan` mapped to number 99901648
确认后,执行:
|
应用到数据:
|
这里的xxx用户,需要super权限,因腾讯云上没有开super权限,可以将表同步到自建库里,再自建库里运行改命令