标签:txt -- 恢复 update pos student MyFlash ocean 快速
说明:
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 student_ocean set update_time=now(),更新全表数据,共176654条
mysqlbinlog --read-from-remote-server --base64-output=DECODE-ROW -vvv --host= 10.0 . 0.1 --port= 3306 --user=xxx --password=xxx --start-datetime= "2021-06-17 10:12:09" --stop-datetime= "2021-06-17 10:26:16" mysql-bin. 000648 |grep student_ocean -A 120 -B 10 >/data/ 61 .txt
|
到对应gtid,start-pos和end-pos,这里-A 120,就是要把后面的信息打印出来,如end-pos的信息
通过 head -n 20 /data/61.txt 和 tail -n 160 /data/61.txt ,找到对应的start-pos和end-pos
mysqlbinlog --read-from-remote-server --base64-output=DECODE-ROW -vvv --host= --port= 3306 --user=xxx --password=xxx --start-position= 233673651 --stop-position= 275603033 mysql-bin. 014292 >/data1/binlog/ 621 .txt
|
这样621.txt,就是完整的更新信息
grep 'student_ocean' 60.txt |wc -l ,计数student_ocean个数:176656,多2个表名:因为,binlog包含下面信息,看信息是完整的:
# update student_ocean set update_time=now()
# at 233673808
#210625 15:26:36 server id 219103 end_log_pos 233673919 CRC32 0x269a4e74 Table_map: `db_support_test`.`student_ocean` mapped to number 99901648
确认后,执行:
./flashback --databaseNames=db_support_test --tableNames=student_ocean --start-position= 233673651 --stop-position= 275603033 --sqlTypes= 'update' --binlogFileNames=/data1/binlog/mysql-bin. 014292
|
应用到数据:
mysqlbinlog --skip-gtids binlog_output_base.flashback|mysql -uxxx -pxxx -h
|
这里的xxx用户,需要super权限,因腾讯云上没有开super权限,可以将表同步到自建库里,再自建库里运行改命令
标签:txt,--,恢复,update,pos,student,MyFlash,ocean,快速 来源: https://www.cnblogs.com/zping/p/14931497.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。