window下Mysql 恢复Delete删除的数据

第一步:先查看binlog功能是否开启
show variables like ‘%log_bin%’;
在这里插入图片描述
如果为log_bin为ON说明可以恢复,如果为OFF说明没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了;

第二步:查看数据文件存方路径
show variables like ‘%datadir%’;
在这里插入图片描述
打开数据库所在路径/data1/mysql_root/data/20155/,查看有mysql-bin.****这样的文件,注意以DELETE删除的时间,对比mysql-bin文件的修改时间,如26日18:00左右删除的,所以找mysql-bin.000028这个文件
在这里插入图片描述

第三步:找到mysql安装目录
show variables like “%basedir%”;
在这里插入图片描述
/data1/mysql_root/base/mysql-txsql-5.7.18-20210630-linux-x86_64_sh12_25g_1629037502/mysql/
CMD命令符进到Mysql安装目录下,找到mysqlbinlog.exe,如果没有说明你安装的是假mysql.
在这里插入图片描述
第四步.通过mysqlbinlog 恢复删除的数据日志记录
mysqlbinlog --base64-output=decode-rows -v --database=DBName
–start-datetime=“2019-11-26 18:00:00”
–stop-datetime=“2019-11-26 18:10:00”
D:/MySQL/Data/mysql-bin_copy.000028 > mysqllog.sql

mysqlbinlog 命令的参数说明
–base64-output=decode-rows //数据转换正常的字符,如果不设置这个参数将显示base64的数据
–database=DBName //数据库名(一个mysql数据库比较多,指定方便恢复)
–start-datetime=“2019-11-26 18:00:00” //恢复起始时间
–stop-datetime=“2019-11-26 18:10:00” //恢复结束时间
D:/MySQL/Data/mysql-bin_copy.000028 //为数据恢复的日志文件
mysqllog.sql //恢复以后我们需要的文件名

打开mysqllog.sql文件,搜索 DELETE 关键字,找到被删除数据,看到这些数据以后总算放心了,如下图:
在这里插入图片描述

第五步:把mysqllog的DELETE转换为Insert语句,这个在liunx下操作方便(有人用python转换也可以),把文件mysqllog.sql复制Liunx下
cat mysqllog.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
在这里插入图片描述

转换以后打开mysqllogOK.sql文件,因为批量替换前面多个一个分号,去掉以后,把所有生成的Insert语句在navicat下执行即可恢复所有DELETE删除的数据。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值