mysql 通过mysqlbinlog对delete误删除数据后的详细恢复方案

通常情况下对于mysql innodb误删除导致记录丢失的恢复方案有三种,分别是备份还原、binlog还原和记录深度解析,今天我们就binlog还原来聊一聊

实现原理:mysql服务器通过记录sql执行记录到二进制日志文件,我们可以导出成可视化的txt格式的,里面就是对数据库各种操作的sql语句,我们对这些sql语句做处理,得到自己想要的格式,来做数据的恢复。

1.先查看binlog功能是否开启
show variables like ‘%log_bin%’;

windows系统开启方法:
打开my.ini文件,添加如下配置,重启mysql即可开启
my.ini配置文件在数据文件存放路径Data的上一层目录

#log-bin
log-bin=mysql-bin
binlog_format=ROW

2.查看数据文件存放路径

show variables like '%datadir%';

3.找到mysql安装目录,mysqlbinlog.exe工具就在/bin目录下

show variables like "%basedir%";

4.使用mysqlbinlog命令,cmd管理员运行或者PowerShell(管理员)

mysqlbinlog --base64-output=decode-rows -vv --database=springboot --start-datetime="2022-01-10 16:50:00" --stop-datetime="2022-01-10 16:51:00" --set-charset="utf8" C:\ProgramData\MySQL\"MySQL Server 5.7"\Data\mysql-bin.000010 > D:\original.txt

参数说明:
–base64-output=decode-rows:base64编码格式输出
-v用行事件重构伪sql语句
-v在列数据类型上添加注释
–database数据库
–start-datetime指定日志记录解析开始时间
–stop-datetime指定日志记录解析结束时间
–set-charset设置输出编码
mysql-bin*:二进制日志输入文件
original.txt:解析后的输出文件,名称自定义

–start-datetime和–stop-datetime两个参数可以帮助我们在日志量比较大时,快速定位要解析的日志,时间是您执行delete语句的时间
navicat工具查看sql执行日志
工具-历史日志-搜索delete(只能查到当日sql执行日志)
在这里插入图片描述

5.通过cat和sed来重构我们想要的sql语句

cat original.txt | sed -n '/### /p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@2.*),/\1;/g' | sed 's/@[1-9]=//g' > result.txt

命令说明:
sed -n ‘/### /p’:以### 开头的行
sed ‘s/### //g;s//*./,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;’:删除### ,/**/,DELETE FROM替换成INSERT INTO,WHERE替换成SELECT
sed -r 's/(@2.
),/\1;/g’:把@2行最后一行,替换成; 根据自己表的字段个数改下就可以了
sed ‘s/@[1-9]=//g’:删除以@1-9=

result.txt:把处理后的内容写入result.txt文件

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大佬腿好粗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值