注意红色字体。
flush table with read lock锁住主库 这点最为重要。
可用的方法
1.MySQL单表恢复方法
从过滤掉这一条语句,后同步
2.记一次MySQL删库的数据恢复
从ibdata1文件恢复
sed脚本需要看懂。
4.MySQL【Update误操作】回滚
http://www.cnblogs.com/zhoujinyi/archive/2012/12/26/2834897.html
这个案例最佳。
5.案例 - 误删千万的表
http://dadaman.blog.51cto.com/11373912/1933137
这个案例工具不错
还需要待更新
恢复方法,比较繁琐,实际效果不好,会丢失数据。
1.flush table with read lock锁住主库
如果不锁库,后面的数据在不断的更新,即使你恢复到故障点,也要关注后续的数据变化。比如一个字段。
2.copy binlog
3.恢复到12点
4.生产建立temp表
5.然后通过code,更新状态
6.查找12点后执行的update语句,找出来,更新这一个字段,因为数据在一直变动。
具体操作
1.恢复到故障前的状态,比如12点 grep -B 15 'type'
2.但是注意,如果是where很细的条件,就是@带数字,所以查起来要小心
操作命令
mysqlbinlog --base64-output=DECODE-ROWS -v --start-datetime="2017-05-25 23:30:00" --stop-datetime="2017-05-26 11:36:59" mysql-bin.xx|grep -B 15 'type'
或者
mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.xx|grep -B 15 'type'
使用的脚本
先来看看mysql binlog update的语句样子,mysql版本5.7
python版本
可以参考http://wangwei007.blog.51cto.com/68019/1306940
python写的分析mysql binlog日志工具
# !/usr/bin/env