利用binlog2sql快速闪回误删除数据 - 别拿豆包不当干粮 推荐 原创 张甦 2017-11-30 15:15:20 博主文章分类:MySQL ©著作权 文章标签 MySQL binlog binglog 文章分类 MySQL 数据库 ©著作权归作者所有:来自51CTO博客作者张甦的原创作品,请联系作者获取转载授权,否则将追究法律责任 各位兄弟们,好久不见了!最近一直忙于新书的创作,所以一直没有时间更新博客。不知道这段时间大家学习得怎么样,希望大家通过看我的文章给大家带来帮助。 老张我也花费了大量时间录制一些数据库的视频课程,大家要是感兴趣,也可以去学习,不要错过啊! 今儿抽出时间,给大家分享一篇利用binlog2sql闪回工具,来恢复误删除的数据。我们都知道binlog的作用是备份恢复和完成MySQL的主从复制功能。利用mysqlbinlog工具可以进行基于时间点或者位置偏移量的数据恢复工作,在生产环境中遇到误删除,改错数据的情况,那是常有的事儿。我们都知道Oracle数据库有闪回功能,而MySQL本身没有自带闪回,但我们可以使用binlog2sql来完成这项工作。 我们都知道binlog是以event作为单位,来记录数据库变更的数据信息,闪回就是可以帮助我们重现这些变化数据信息之前的操作。也就是说对于insert操作,会生成delete语句,反之delete操作,会生成insert语句。对于update操作,也会生成相反的update语句。这款工具只能使用在binlog格式为row模式下。 下面进行实战演练: binlog2sql工具的下载地址: https://github.com/danfengcao/binlog2sql 第一步:环境准备安装各种依赖的工具包列表 python-pip , PyMySQL , python-mysql-replication, wheel argparse 第二步:解压binlog2sql软件,命令如下 unzip binlog2sql-master.zip cd binlog2sql-master pip install –r requirements.txt 第三步:通过python binlog2sql.py --help命令,来查看重要参数的使用; -B, --flashback 生成回滚语句 --start-file 需要解析的binlog文件 --start-position 解析binlog的起始位置 --stop-position解析binlog的结束位置 --start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime --stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime -d, --databases 只输出目标db的sql -t, --tables 只输出目标tables的sql 第四步:开始模拟数据删除 首先删除掉zs库下,t表中的数据 root@db 14:26: [zs]> select * from t; +----+------+---------+ | id | name | address | +----+------+---------+ | 1 | aaa | bj | | 2 | bbb | sh | | 3 | ccc | gz | | 4 | ddd | sy | | 5 | eee | fj | +----+------+---------+ 5 rows in set (0.00 sec) root@db 14:26: [zs]> delete from t; Query OK, 5 rows affected (0.04 sec) root@db 14:27: [zs]> select * from t; Empty set (0.00 sec) 第五步:需要创建一个闪回用户 create user 'zs_test'@'%' identified by '123456'; grant select,replication slave,replication client on *.* to 'zs_test'@'%' ; flush privileges; 第六步:确定当前binlog文件和position位置 root@db 14:41: [zs]> show master status; +---------------------+----------+--------------+------------------+------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------------+----------+--------------+------------------+------------------------------------------+ | mysql-binlog.000002 | 2091 | | | e10f0ead-d595-11e7-82cb-080027cd683a:1-8 | +---------------------+----------+--------------+------------------+------------------------------------------+ 可以看到当前binlog是:mysql-binlog.000002 位置偏移量:2091 第七步:需要预估下时间,误操作的时间范围应该在下午2点20分到2点30分之间。命令如下: python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file='mysql-binlog.000002' --start-datetime='2017-11-30 14:20:00' --stop-datetime='2017-11-30 14:30:00' 输出结果: DELETE FROM zs.t WHERE address='bj' AND id=1 AND name='aaa' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address='sh' AND id=2 AND name='bbb' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address='gz' AND id=3 AND name='ccc' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address='sy' AND id=4 AND name='ddd' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address='fj' AND id=5 AND name='eee' LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 从解析结果中我们了解到,误操作sql的位置是在1214~1427之间;这样就可以进一步过滤,使用flashback模式生成回滚sql; 命令如下: python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file='mysql-binlog.000002' --start-position=1214 --stop-position=1427 -B >t_rollback.sql 查看闪回导出文件: [root@node3 binlog2sql]# cat t_rollback.sql INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('fj', 5, 'eee'); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('sy', 4, 'ddd'); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('gz', 3, 'ccc'); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('sh', 2, 'bbb'); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES ('bj', 1, 'aaa'); #start 1214 end 1427 time 2017-11-30 14:27:46 第八步:应用回滚文件,恢复数据。命令如下: /usr/local/mysql/bin/mysql -uroot -proot123 zs < t_rollback.sql 第九步:检验恢复数据是否成功 root@db 15:09: [zs]> select * from t; +----+------+---------+ | id | name | address | +----+------+---------+ | 1 | aaa | bj | | 2 | bbb | sh | | 3 | ccc | gz | | 4 | ddd | sy | | 5 | eee | fj | +----+------+---------+ 5 rows in set (0.00 sec) 验证恢复数据成功! 工具虽小,但功能很强大,我们要善于发现周围的资源,利用这些武器,来帮助我们学习MySQL数据库!今后老张会继续分享新的干货,供大家学习参考! 赞 收藏 评论 分享 举报 上一篇:想要Freestyle?先要遵守 MySQL 这十大铁律! 下一篇:老司机带你在MySQL领域“大吉大利,晚上吃鸡” 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 【Netapp数据恢复】Netapp存储lun被误删除的数据恢复案例 某单位一台Netapp存储,该Netapp存储内共有数十块SAS硬盘。工作人员误操作删除了Netapp存储中12个lun,删除的数据包括客户信息和其他重要数据。 数据恢复 netapp数据恢复 存储数据恢复 服务器数据恢复 无涯教程-PostgreSQL - 删除数据库 在本章中,无涯教程将讨论如何在PostgreSQL中删除数据库。删除数据库有两个选项-使用DROP DATABASE,这... postgresql SQL数据库入门02:创建、修改处理、复制与删除数据库表 本文介绍基于Microsoft SQL Server软件,实现数据库表的创建、修改、复制、删除与表数据处理的方法~ 数据库 SQL 数据库表 SQL Server MySQL 利用binlog2sql快速闪回误删除数据 下面进行实战演练:binlog2sql工具的下载地址:https://github.com/danfengcao/binlog2sql第一步:环境准备安装各种依赖的工具包列表python-pip,PyMySQL,python-mysql-replication,wheelargparse第二步:解压binlog2sql软件,命令如下unzipbinlog2sql-master.zipcdbinlo mysql 删除数据 离线安装binlog2sql恢复误删除数据 下载离线包先在一台能上网的机器下载好离线包git clone https://github.com/danfengcao/binlog2sql.git pip3 download -r requirements.txt ./将依赖包下载到./目录因为是mysql8.0还需要安装PyMySQL和mysql-replicationpip3 download PyMySQL==0.9.3 binlog2sql mysql8 恢复 如何使用binlog2sql快速恢复Mysql误删除的数据 如何使用binlog2sql快速恢复Mysql误删除的数据 mysql 数据库 原力计划 sql 回滚 MySQL闪回-binlog2sql 参考: https://github.com/danfengcao/binlog2sql binlog2sql 从mysql binlog解析出你要的sql。根据不同选项,你可以得到原始sql、回滚sql、去除主键的insert sql等。 用途数据快速回滚(闪回) 主从切换后数据不一致的修复 从binlog生成标准SQL,带来的衍生功能 ... binlog2sql mysql闪回 sql mysql python 别拿山寨机不当干粮 “一定得选最好的硬件芯片,雇法国设计师,做就得做最高档的手机;平台直接用MTK,屏幕最小也得3.5的,什么智能呀、3G呀、双卡同时待机呀、能给他装的全给他装上;前面一个摄像头、后面一个摄像头 干粮 休闲 山寨机 别拿 不当 binlog2sql之MySQL数据闪回 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。现在有不少好用而且效率又高的开源闪回工具如binlog2sql、mysqlbi MySQL sql binlog2 mysql 误删除数据-数据回滚 Mysql误删除数据,使用myflash进行数据回滚,进行数据恢复。 mysql 误删除 sql 数据回滚 myflash MySQL工具之binlog2sql闪回操作 MySQL工具之binlog2sql闪回操作工具官网:https://github.com/danfengcao/binlog2sql 本文所有依赖包链接:... sql python mysql mysql闪回工具binlog2sql 安装使用 mysql闪回工具binlog2sql binlog2 sql 闪回 操作 记录下闪回工具binlog2sql使用 mysql MySQL Mysql数据闪回的奇技淫巧(binlog2sql) 一、概述binlog2sql是一个开源项目,应用于大众点评线上环境。类似于ORACLE中的闪回功能,binlog2sql可以基于时间点或者位置偏移量进行数据恢复。从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。也就是对于insert操作会生成对应的delete语句,反之delete操作会生出对应的insert语句,up mysql binlog2 sql sql server误删除数据恢复 # SQL Server误删除数据恢复在使用SQL Server数据库时,误删除数据是一个常见的问题。当你不小心执行了一个DELETE语句,并且删除了错误的数据时,你可能会感到绝望。然而,SQL Server提供了一些技术和工具来帮助你恢复误删除的数据。本文将介绍如何使用日志文件、备份和第三方工具来恢复误删除的数据。## 数据恢复的原理在理解如何恢复误删除的数据之前,让我们先了解一下数 数据 恢复数据 日志文件 恢复误删除数据 恢复被误删除或误格式化硬盘对一块我们读不出来数据的硬盘,我们要知道数据在硬盘里面的存储原理,硬盘的分区原理,具体分析参考岳雷老师的博客(http://yuelei.blog.51cto.com)。我们用winhex硬盘数据恢复工具分析,我们进入63扇区,63扇区能给我们的信息是这个分区的大小和这个分区的分区类型(FAT或是NTFS),而我们知道,FAT又分FAT16和FAT32两种,因为FAT 分区表 winhex 休闲 误删除 恢复数据 MySQL闪回工具简介 及 binlog2sql工具用法 一、 简介binlog2sql是大众点评开源的一款用于解析binlog的工具。1. 根据文档主要用途如下 mysql 数据库 java sql 回滚 ADG库闪回误删除的表 适用范围oracle数据库所有平台,ADG数据库开启了闪回功能。问题概述误删除表通过ADG闪回恢复。闪回前确认确认数据库为只读库SQL> select open_mode from v$database; OPEN_MODE--------------------READ ONLY WITH APPLY确认闪回开启SQL> select flashback_on from v SQL 闪回 数据库 ADG ORACLE mysql误删除数据恢复 # MySQL误删除数据恢复MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。然而,在使用MySQL时,不可避免地会发生误删除数据的情况。本文将介绍如何通过备份和日志恢复的方法,从一个MySQL数据库中恢复误删除的数据。## 1. 备份恢复备份是一种常见的数据恢复方法,通过恢复数据库的备份文件来还原误删除的数据。MySQL提供了多种备份方式,常见的有逻辑备份 mysql 数据 MySQL oracle误删除数据恢复 查找对应删除的时间点 select * from v$sql where sql_text like '%test_table%'; 使用时间来回复指定的表数据 insert into test_table select * from test_table as of timestamp to_ti sql 表数据