mysql数据误删通过binlog恢复数据(Linux系统)

场景:误清除了某系统内凌晨5点-下午18点所有的数据记录

系统为vue+springboot前后端分离项目,数据库为mysql版本8.0.22,linux

在这里插入图片描述

第一步:停止系统后台,寻找mysqlbinlog文件位置

binlog一般就在mysql安装目录下mysqldb中(前提是开启了binlog日志功能):
在这里插入图片描述

先找 “binlog” 为关键字的文件
因为binlog日志文件是二进制文件,需要mysql的自带的mysqlbinlog工具进行转码
在这里插入图片描述
使用以下命令转换指定时间段的binlog日志为可阅读的sql文件
在这里插入图片描述

先进入mysql安装目录下的bin目录
cd /usr/local/mysql/bin
执行以下命令(需要替换下面提到的参数)
mysqlbinlog --no-defaults -v --base64-output=decode-rows --database={数据库名称} --start-datetime="2023-11-30 05:00:00" --stop-datetime="2023-11-30 18:00:00" /usr/local/mysql/mysqldb/binlog.000026 > log1.txt
--database= #被误清除的数据库名称
--start-datetime="2023-11-30 05:00:00" #起始时间 早上凌晨五点
--stop-datetime="2023-11-30 18:00:00"  #停止时间 下午六点

导出了log文件之后可以进行第二步

第二步,通过查找日志的起始pos点来恢复指定时间段数据

打开导出的log.txt文件如下图:
在这里插入图片描述

重点看两个部分一个是时间 红框中 231130 5:00:02是5点的操作记录
第二个at为日志点位 pos (这个是恢复最终重要收集的信息)
之前导出时设置了时间段所以此处只需要找到第一个业务操作sql的pos点位
然后再找到log结尾时间点的pos点位(如下图)

在这里插入图片描述

第三步 恢复数据

把刚刚收集的两个点位结合下面的命令,开始恢复数据库

先进入mysql安装目录下的bin目录
cd /usr/local/mysql/bin
以指定pos节点恢复数据
mysqlbinlog --no-defaults  -v /usr/local/mysql/mysqldb/binlog.000026 --start-position=510879666 --stop-position=521877693 | mysql -u root -p
--no-defaults 防止出现编码异常的问题
/usr/local/mysql/mysqldb/binlog.000026 替换成binlog的实际目录
--start-position=510879666 #开始节点
--stop-position=521877693 #结束节点

执行完需要输入数据库密码,此过程较慢耐心等待,没有返回消息就是好消息
最后恢复成功,数据库整体恢复到18点的状态,业务正常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值