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

首先查看是否开启了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通过文件导入数据库

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容