1.binlog功能是否开启
show variables like '%log_bin%';
如果为log_bin为ON说明可以恢复,如果为OFF说明没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了,GAMEOVER
(好像可以通过ibd恢复,具体可以参考 https://blog.youkuaiyun.com/hanjun0612/article/details/102466509)
2.根据操作时间找到binlog
3.通过mysqlbinlog恢复删除的数据日志记录
mysqlbinlog --base64-output=decode-rows -v --database=DBName --start-datetime="2019-11-26 18:00:00" --stop-datetime="2019-11-26 18:10:00" /mysqldata/mysqlbinlog/mysqlbinlog.000020 > mysqllog.sql
4.把mysqllog的DELETE转换为Insert语句
cat mysqllog.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.*),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql
5.转换以后打开mysqllogOK.sql文件,因为批量替换前面多个一个分号去掉