binlog找回误删数据

1、检查当前是否开启binlog存储

输入命令show variables like '%log_bin%';,结果如下
在这里插入图片描述
可以看到log_bin的值是ON,说明binlog开启了。

2、查找binlog的存储位置

这个去到数据库的my.cnf配置文件中寻找,有一个log_bin的配置
在这里插入图片描述
切换到log_bin的目录下,可以发现有多个binlog日志文件和一个索引文件,这个索引文件记录了binlog日志文件的顺序,每次重启mysql都会生成一个新的binlog日志文件,编号依次递增
在这里插入图片描述

3、查看binlog文件

在mysql的bin目录下,有一个binlog日志分析工具mysqlbinlog,在当前目录下,输入下面命令可以查看对应的binlog日志信息

查询某时间段内tacs_log库的操作日志,写到txt文件中

./mysqlbinlog --no-defaults --database=tacs_log --start-datetime="2023-03-03 14:00:00" --stop-datetime="2023-03-03 14:45:00" /app/logs/mysql/mysql-binlog.000056 > temporary.txt  

将操作日志输出到屏幕上

./mysqlbinlog --no-defaults --database=tacs_log --start-datetime="2023-03-03 14:00:00" --stop-datetime="2023-03-03 14:45:00" /app/logs/mysql/mysql-binlog.000056 |more

查询某个具体表的日志输出到文件

./mysqlbinlog --no-defaults --database=tacs_log --start-datetime="2023-03-03 14:00:00" --stop-datetime="2023-03-03 14:45:00" /app/logs/mysql/mysql-binlog.000056 |grep auth_service_log_20230206 >1.txt

在这里插入图片描述
在查看日志时,发现了一个日志文件好像是乱码,实际上这是经过了base64编码之后的结果,所以,在操作命令上加上解码即可,命令如下

./mysqlbinlog --no-defaults --database=tacs_log --start-datetime="2023-03-03 14:00:00" --stop-datetime="2023-03-03 14:45:00" -vv --base64-output=decode-rows  /app/logs/mysql/mysql-binlog.000056 > temporary.txt

在这里插入图片描述
可以看到,对应的操作sql已经展示出来,上面是我测试了删除数据,可以看到表、数据都打印出来,根据这些可以进行数据恢复。

4、补充

命令参数解析:

--start-position=103 起始位置
--stop-position=203 结束位置
--start-datetime 起始时间点
--stop-datetime 结束时间点
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雅俗共赏zyyyyyy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值