mysql8通过binlog恢复数据

本文详细描述了在MySQL8中通过binlog文件恢复误删除数据的过程,包括定位binlog文件、时间筛选、提取insert和update操作,以及将SQL脚本转换为可执行格式。
摘要由CSDN通过智能技术生成

参考资料通过binlog恢复误update的数据(一)_binlog 恢复update-CSDN博客

记录一次工作中的误删除,使用binlog恢复数据的问题。

1:找到mysql8的binlog文件。

2:把binlog文件转换为初始sql文件

mysqlbinlog -vv --base64-output=decode-rows参数的含义

mysqlbinlog -vv --base64-output=decode-rows 
--start-datetime='2024-02-01 13:49:00' 
--stop-datetime='2024-02-01 13:50:00' binlog文件路径 > 生成的sql文件

-vv 显示备注
--base64-output=decode-rows
--start-datetime和--stop-datetime时间筛选

3.把初始文件里面的需要恢复的操作(insert,update)提取出来

## 提取出insert操作

grep -A 17 -E  "### INSERT INTO \`数据库名称\`.\`表名\`" 生成的sql文件 > 新增sql文件;


## 提取出update操作

grep -A 34 -E  "### UPDATE \`数据库名称\`.\`表名\`" 生成的sql文件 > 更新sql文件;

4.把提取出来的新增或者更新sql文件转为为可执行的sql文件

## insert 转换为可执行sql文件

sed -i 's/###//g; s/@1=//g; s/@2=//g; s/@3=//g; s/@4=//g; s/@5=//g; s/@6=//g; s/@7=//g; s/@8=//g; s/@9=//g; s/@10=//g; s/@11=//g; s/@12=//g; s/@13=//g; s/@14=//g; s/@15=//g; s/@16=//g; s/SET/VALUES(/g; s|*/|*/,|g; s/--//g; s:/\*.*\*/::g' 新增sql文件;sed -i "s/'00'/'00')/g" 新增sql文件;sed -i 's/) ,/) ;/g' 新增sql文件


## update 转为为可执行sql文件

sed -i 's/### //g; s/--//g;s:/\*.*\*/::g' 更新sql文件;
sed -i '/WHERE/{:a;N;/SET/!ba;s#WHERE#set#g}' 更新sql文件;
sed -i '/SET/{:a;N;/\n/!ba;s#SET#where#g}' 更新sql文件;
sed -i '/set/{:a;N;/where/!ba;s#@5=#STATUS=#g}' 更新sql文件;
sed -i '/where/{:a;N;/\n/!ba;s#@1=#TASKID=#g}' 更新sql文件;
sed -i '/@/'d 更新sql文件;
sed -i -r 's#(TASKID=.*)#\1;#g' 更新sql文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值