概述

  代码bug,在处理上传出现异常时执行了DELETE FROM t_resource WHERE resource_id = ? OR parent_id = ?因为OR条件导致用户的上传的所有数据被清空了。

show

  查看是否有开启log-bin备份

show variables like 'log_bin'

欣慰的是,已经开启了二进制日志备份。那接下来就简单多了,找到这个二进制日志,找到这个节点,去恢复它。执行这个命令,查看正在写入的二进制日志是哪个文件

show master status

当然也可以flush重新开始一个文件写入。用这个文件名在Linux全局搜下这个文件在哪==> find / -name mysql,找到这么久好办了。

mysqlbinlog

mysqlbinlog -vv --start-datetime='2019-9-24 11:24:00' --stop-datetime='2019-9-24 11:25:20' mysql-bin.000211| grep "t_resource" | more

查看里面执行删除操作的pos位置

然后去查看从哪里开始执行了删除

show binlog events in 'mysql-bin.000211'

知道了开始和结束的节点,恢复数据就很快了,因为logbin是二进制日志,我们把它弄成我们看得懂的

mysqlbinlog -vv --start-position=956859551 --stop-position=956863056 mysql-bin.000211 |grep ^"###" >bin_1448

就生成了一个bin_1448文件。我们打开看下

这个就是执行delete删除的东西

INSERT

接下去就是把它反过去变成insert语句就OK了

cat bin_1448 | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@6.*),/\1;/g' | sed 's/@[1-9]=//g' | sed 's/@[1-9][0-9]=//g' >resource.sql

打开,resource.sql 就是我们很多眼熟的sql语句了。。调整执行就很简单了

总结

  以上只能对delete的误操作有效,而且binlog是行模式,如果是truncate的语句造成,那只能祈祷有备份文件了。

参考

https://yq.aliyun.com/articles/664444

转载于:https://www.cnblogs.com/dslx/p/11578972.html

mysqlbinlog恢复误删数据相关推荐

  1. 使用MySQL的binlog日志恢复误删数据

    使用binlog日志恢复误删数据 1.查看binlog是否开启并锁表 # 进入mysql mysql -uroot -proot#查看binlog是否开启 show variables like '% ...

  2. PostgreSQL恢复误删数据

    在Oracle中:删除表或者误删表记录:有个闪回特性,不需要停机操作,可以完美找回记录.当然也有一些其他的恢复工具:例如odu工具,gdul工具.都可以找回数据.而PostgreSQL目前没有闪回特性 ...

  3. 利用plsql工具恢复误删表和恢复误删数据

    一.恢复误删表 1.执行以下sql语句,找到被自己误删的数据表对应的object_name: select * from user_recyclebin t;--查看被删掉的表 2.根据得到的obje ...

  4. mysql数据库误删且未持久化_MySQL恢复误删数据解决方案

    工作中难免会误删数据,下面说一下怎样从导出的备份数据和binlog日志中恢复数据.关于备份数据和binlog可以参考下面的文章: 一.恢复数据思路 总体思路是从备份文件中恢复已备份的数据,还有一些未备 ...

  5. oracle 回闪技术恢复误删数据

    在oralce中,我们有时误删了某些数据或者删除了某些表:这时我们需要恢复这些数据. 第一,delete数据后恢复 delete某些数据后,可以使用下面语句找到,这个主要是使用Oracle的快照功能. ...

  6. Hbase恢复误删数据

    1.hdfs的回收站机制 客户有时会误删一些数据,在生产环境下,误删数据会造成非常严重的后果. 在hdfs上有一个回收站的设置,可以将删除的数据存在目录"/user/$/.Trash/&qu ...

  7. 恢复误删数据(SQL Server 2000)--Log Explorer

    首先来看一下界面:       输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个 ...

  8. 转 --- 恢复误删数据

    曾经想实现Log Explorer for SQL Server的功能,利用ldf里面的日志来还原误删除的数据 这里有一篇文章做到了,不过似乎不是所有的数据类型都支持 以下为译文:http://rar ...

  9. mysqlbinlog 恢复mysql数据

    确保my.cnf启动了 log-bin (既log-bin=mysql-bin) mysql> show master status;   #查看使用的那个logbin文件 mysql> ...

最新文章

  1. 重磅!2021泰晤士世界大学排名公布,清华排名首次挺进top20
  2. poj 3150 Cellular Automaton(迷糊,但原理是用的快速幂)
  3. Charles模拟403/404(Web)
  4. 深度学习到底有多难?掌握方法很重要!
  5. SPOJ 3267: DQUERY 树状数组,离线算法
  6. java会了还学什么_java都学哪些内容?学完之后可以做哪些工作?
  7. ggplot2绘图如何根据一个变量即区分颜色又区分深浅?
  8. 使用XIB实现嵌套自定义视图
  9. html动画曲线快速结束,CSS3 animation动画
  10. 详解Python函数式编程之map、reduce、filter
  11. php srem,Redis Srem 命令
  12. 如何用 Nginx 禁止国外 IP 访问网站?
  13. 无人机中的坐标系与相机姿态计算
  14. [我叫以赏]Python获取B站UP主粉丝数
  15. ae合成设置快捷键_必收藏的AE常用快捷键(全不全,看过才知道)
  16. jarvis oj typo
  17. CI框架获取数据库错误码
  18. 蛮力法求解百元买百鸡问题
  19. 【工具】Gamepad Tester游戏手柄在线测试平台
  20. 爬虫_西电研究生教务系统_技术文档

热门文章

  1. SpringBoot、mysql配置PageHelper插件
  2. 在apache中设置访问目录后进入的默认页面为index.php
  3. Daily Scrum 2012/11/08
  4. 谈*静态页*(或网页*静态化*)的时候,请区分一些概念(转)
  5. 从今开始,好好学习一下算法!
  6. 史上最详细的js日期正则表达式分享
  7. python --- opencv部分学习
  8. 读书笔记 --- [基础知识点] 小结3
  9. javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系
  10. BZOJ 2440 完全平方数(莫比乌斯-容斥原理)