mysqlbinlog恢复误删数据
概述
代码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
mysqlbinlog恢复误删数据的更多相关文章
- 实战演习:mysqlbinlog恢复bin-log数据
mysqlbinlog恢复bin-log数据 Binlog日志即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即从节点同步主节点数据时获取的即是bin-log, ...
- PostgreSQL恢复误删数据
在Oracle中:删除表或者误删表记录:有个闪回特性,不需要停机操作,可以完美找回记录.当然也有一些其他的恢复工具:例如odu工具,gdul工具.都可以找回数据.而PostgreSQL目前没有闪回特性 ...
- Mongodb全备+增备+oplog恢复误删数据
此时测试表中有7条数据,做个全备. 全备: mongodump --host=192.168.43.43 --port=37017 --oplog --out=/opt/mongo/fullbacku ...
- 利用Mysqlbinlog恢复数据库数据
关于binlog的详解请参考:http://zlyang.blog.51cto.com/1196234/1833062 binlog日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句.语句以& ...
- Oracle恢复误删数据
1.先查出被删除的时间点: select * from flashback_transaction_query where table_name='表名'; 2.根据时间点恢复数据: insert i ...
- oracle 恢复误删数据
快照 select * from sys_info as of timestamp to_Date('2014-04-08 15:28:00', 'yyyy-mm-dd hh24:mi:ss') ...
- 使用mysqlbinlog恢复数据
前提:mysql数据库开启了binlog日志,并且有对应的日志文件 起因:今天由于同事对数据库的误操作不小心删除了一条数据 方法一:通过binlog日志文件恢复数据 通过mysqlbinlog恢复My ...
- delete误删数据使用SCN恢复
参考51CTO博客 问题描述:使用scn号恢复误删数据 1.查询系统闪回的scn值以及当前日志的scn值,因为我这个是测试,创建的表是在在后边,所以scn值要大于下边这两个scn值,所以对我恢复数据没 ...
- Oracle- 查询误删数据
使用flashback table能恢复误删数据. flashback table CONTAINER_CONTENT to timestamp to_timestamp('2010-06-30 22 ...
随机推荐
- Excel解析工具easyexcel全面探索
1. Excel解析工具easyexcel全面探索 1.1. 简介 之前我们想到Excel解析一般是使用POI,但POI存在一个严重的问题,就是非常消耗内存.所以阿里人员对它进行了重写从而诞生了eas ...
- SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现
SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现 如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660.该内向交货单是在外向交货单8001632 ...
- Mybatis使用Mybatis-generator插件及配置(数据库逆向工程)
Mybatis使用Mybatis-generator插件 首先在POM.xml文件添加架包,我这里用的是SpringBoot,所以用的也是SpringBoot架包,最少要mybatis,generat ...
- 困扰了2天的问题,终于解决了。VB6的MSComCtl.ocx在32位Win7显示对象库未注册
解决方案在这里,中文的资料真的挺垃圾的.(重启几次之后又不行了....怎么回事???) 安装.net framework4.0以上版本, C:\Windows\System32, C:\Windows ...
- Mac启动MySQL
启动MySQL服务 sudo /usr/local/Cellar/mysql//bin/mysql.server start 停止MySQL服务 sudo /usr/local/Cellar/mysq ...
- conan使用(五)--打包chromium-base
现在我们就利用之前学习到的conan的使用方法,将chromium中的base库打包成一个conan包. 1. 准备源码 chromium本身是通过gn来编译的,这个目前conan并不支持.所以需要把 ...
- 第13节-BLE协议L2CAP层
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Proto ...
- 201871010101-陈来弟《面向对象程序设计(JAVA)》 第13周学习总结
201871010101-陈来弟<面向对象程序设计(JAVA)> 第13周学习总结 实验十一 图形界面事件处理技术 实验时间 2019-11-22 第一部分:理论知识 一.事件处理 1.事 ...
- python 爬虫之-- 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 正则表达式非python独有,python 提供了正则表达式的接口,re模块 一.正则匹配字符简介 模式 描述 \d ...
- 【PL/SQL 卡】
DBA给解决好了,但我不在场,要问一下