一、 找运维导出biglog
日志名称导出为:mysql-bin.000014
二、将biglog转换为sql
在mysql安装目录的/bin目录下执行以下命令:
mysqlbinlog --no-defaults --base64-output=decode-rows -v --database=db_test1 --start-datetime="2023-03-23 09:00:00" --stop-datetime="2023-03-23 10:00:00" D:\huangtc\数据恢复\mysql-bin.000014 > test1.sql
mysqlbinlog日志参数说明
- --no-defaults //mysql自带的 mysqlbinlog工具无法识别binlog中的配置中的default-character-set=utf8这个指令
- --base64-output=decode-rows //数据转换正常的字符,如果不设置这个参数将显示base64的数据
- --database=db_test1 //数据库名(一个mysql数据库比较多,指定方便恢复)
- --start-datetime="2023-03-23 09:00:00" //恢复起始时间
- --stop-datetime="2023-03-23 10:00:00" //恢复结束时间
- D:\huangtc\数据恢复\mysql-bin.000014 //需要数据恢复的日志文件
- test1.sql //恢复以后生成的文件名
三、打开test1.sql文件
发现其中有delete关键字,然后将其中的delete转为insert
在test1.sql文件所在目录,执行以下bash命令:(Windows下可以通过git bash界面执行)
cat test1.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' > OK.sql
打开生成的OK.sql
找到自己需要insert的语句,插入数据库即可。