Mysql误删除数据之后的数据恢复

2022-11-25  本文已影响0人  小丸子的呆地

首先查看是否开启了binlog

show variables like '%log_bin%';

image.png

没有开启binlog,就无法使用binlog进行数据找回

查找binlog路径

show variables like '%datadir%';

image.png

找到对应的binlog文件

一般为修改时间最近的文件


image.png

按误操作时间找到对应的binlog记录,并转换为sql

mysqlbinlog --base64-output=decode-rows -v --database=数据库名称 --start-datetime="2022-11-26 11:32:00" --stop-datetime="2022-11-26 11:33:00" "/usr/local/var/mysql/binlog.000026" > /../mysqllog.sql

将文件中DELETE语句转换为INSERT语句

cat mysqllog.sql | sed -n '/###/p' | sed 's/### //g;'| sed 's/DELETE FROM/);INSERT INTO/g;' |sed 's/WHERE/VALUES(/g;' |sed -E 's/(@17.),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql
注意这种替换方式,需要对结果文件的开头和结尾进行处理。

将转换好的sql通过文件导入数据库

上一篇 下一篇

猜你喜欢

热点阅读