昨天误将mysql数据表中的数据用delete删除了,没有备份,没有回滚,删除了180855条,删除的正是今天要用的数据,好在今天上午成功恢复😄 ,赶紧记录一下恢复过程!

第一步:查看binlog功能是否开启

show variables like '%log_bin%';

如果log_bin的值为ON,那么就可以恢复,如果为OFF说明没有开启bin_log,那么就不能使用本方法进行恢复

mysql误删数据-1.png

第二步:查看binlog文件存放路径

show variables like '%datadir%';

mysql误删数据-2.png

第三步:从存放路径中找 修改时间为你删除mysql数据的时间的一个文件

我删除数据的时间为16:35左右,再结合文件大小确定应该就是这个文件了(最好再将这个文件备份一份,对备份的这个进行操作)

mysql误删数据-3.png

第四步:通过mysqlbinlog 恢复删除的数据日志记录

打开cmd,进入到此文件所在目录,输入如下命令

mysqlbinlog --base64-output=decode-rows -v  DESKTOP-TA3EDSA-bin.000402 > mysqllog.sql

命令解释

mysqlbinlog 命令的参数说明
--base64-output=decode-rows //数据转换正常的字符,如果不设置这个参数将显示base64的数据
DESKTOP-TA3EDSA-bin.000402  //为数据恢复的日志文件
mysqllog.sql    //恢复以后我们需要的文件名

等待执行完成,会出现我们命名的sql文件:mysqllog.sql

第五步:sql文件的内容处理

打开输出的sql文件,内容是这样的

mysql误删数据-4.png

mysql误删数据-5.png

需要对文件内容做如下处理:

  1. 将不需要的内容删除,如文件的首尾段落,只保留delete语句
  2. 将delete语句转为insert into 语句

处理完之后:

mysql误删数据-6.png

第六步:执行sql文件,开始恢复!