1、先找到binlog存放的目录 show variables like 'log_%'; ,可以查看到服务器存放/hctx/mysql-5.7.34/data/
2、执行mysqlbinlog 命令 先用时间进行导出(注意内网服务器时间可能与实际时间有偏差)
mysqlbinlog --base64-output=decode-rows -v --database=sc_veterans --start-datetime="2023-04-14 16:00:00" --stop-datetime="2023-04-14 17:00:00" /hctx/mysql-5.7.34/data/master-bin.000120 > test1.sql
3、在导出的sql文件中找到delete语句的position 和结束position ,导出指定的删除sql
mysqlbinlog --base64-output=decode-rows -v --database=sc_veterans --start-position=376 --stop-position=722 /hctx/mysql-5.7.34/data/master-bin.000120 > testDELETE.sql
4、替换为insert 输出到sql文件 。
cat testDELETE.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、开启2个事务,一个事务查询当前数据,一个事务执行mysqllogOK.sql,执行验证完成后 commit