一:使用binlog2sql 回滚工具的前提条件

1.mysql server必须开启,离线模式下不能解析(通过BINLOG_DUMP协议获取binlog内容,而不是直接解析离线的binlog日志文件,所以如果要解析的binlog文件已经被清除,则无法恢复,需要replication slave权限)
2.参数 binlog_format 必须设置为 row; binlog_row_image 必须为FULL,暂不支持MINIMAL
3.解析速度不如mysqlbinlog
4.解析用户最小权限需要为SELECT, REPLICATION SLAVE, REPLICATION CLIENT
5.目前测试Python 2.7, 3.4+ MySQL 5.6, 5.7, 8.0该工具都能使用(在polardb 上使用必须用高权限用户,并且当前实例开启binlog)

二:安装

1.安装依赖包
yum -y install gcc automake autoconf libtool make libffi-devel zlib-devel2.安装 binlog2sql
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip install -r requirements.txt

三:使用

1.通过大致时间区间正向解析出某时间段的操作

python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-datetime='2016-12-13 20:25:00' --stop-datetime='2016-12-13 20:30:00'
输出:
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-13 20:26:00', 4, '小李'); #start 317 end 487 time 2016-12-13 20:26:26
UPDATE `test`.`tbl` SET `addtime`='2016-12-12 00:00:00', `id`=4, `name`='小李' WHERE `addtime`='2016-12-13 20:26:00' AND `id`=4 AND `name`='小李' LIMIT 1; #start 514 end 701 time 2016-12-13 20:27:07
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-10 00:04:33' AND `id`=1 AND `name`='小赵' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-10 00:04:48' AND `id`=2 AND `name`='小钱' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-13 20:25:00' AND `id`=3 AND `name`='小孙' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-12 00:00:00' AND `id`=4 AND `name`='小李' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05##通过正向解析出来的binlog内容我们可以精确的定位到需要回滚的sql的 start_postion 和 stop_position,通过指定position得到真正的回滚语句
##NOTE1:如果是一个大事务,那么操作多少行,上面的解析就会输出多少行,但是对于该大事务的每行记录 start(事务start_position)不变,但是end(事务stop_position)是变化的,该end值取得是binlog中每个event 的end_log_pos。如下图,对于这样的大事务,者我们自己去分析该大事务的 start_position 和 stop_position,或者我们要找到最后一个delete语句的end值(最后一条语句的end值,取的是commit之前的第一个at 值,不能用于作为mysqlbinlog 解析位点解析binlog动作同步,否则binlog中会被自动加上rollback语句(因为没有解析到commit关键字,所以自动回滚))

2.输出回滚语句

python binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'rootxxx' -dtest_shao -ttest1 --start-file='3306-bin.000015' --start-position=3981 --stop-position=4335 -B > rollback.sql#-B 参数指定输出回滚语句,-d只解析目标db的sql,多个库用空格隔开,如-d db1 db2。可选。默认为空,-t, --tables 只解析目标table的sql,多张表用空格隔开,如-t tbl1 tbl2。可选。默认为空

binlog2sql 恢复工具使用相关推荐

  1. binlog2mysql,MySQL 数据恢复工具之binlog2sql

    概述 已测试环境 Python 2.7, 3.4+ MySQL 5.6, 5.7 最后一次更新是2年前的事情了,一些开源工具上线生产的时候还是需要注意. MySQL8.0的暂时还是不要使用了. 从My ...

  2. mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解

    前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...

  3. mysql表恢复报错binlog_mysql数据恢复,利用binlog2sql快速闪回

    一.环境设置 1.mysql配置中首先要开启binlog,如没开启,在my.conf 下配置如下参数: server-id = 1 log_bin = /var/log/mysql/mysql-bin ...

  4. 数据恢复工具PhotoRec

    数据恢复工具PhotoRec PhotoRec是一款文件恢复工具.它可以从硬盘.光驱.记忆卡中恢复视频.文档.压缩包等文件.该工具绕开文件系统,采用文件特征码机制,直接进行底层数据扫描,尝试恢复文件. ...

  5. IE访问历史记录恢复工具pasco

    IE访问历史记录恢复工具pasco IE浏览器会自动记录用户访问网站的操作,并将这些信息保存在IE缓存中的index.dat文件中.通过分析这些历史记录,可以还原用户行为.为了便于数字取证,Kali ...

  6. 基于特征码文件恢复工具magicrescue

    基于特征码文件恢复工具magicrescue 常见类型的文件都包含一些特殊的字节,用来标识文件的类型.这些字节被称为特征码.在磁盘中,当记录文件存储位置的簇损坏后,就可以基于这些特征码来恢复文件.针对 ...

  7. Ext分区文件恢复工具extundelete

     Ext分区文件恢复工具extundelete Ext是延伸文件系统(Extended system)的缩写.它是为Linux内核开发的第一个文件系统.它有多个版本.现在常见的是Ext3和Ext4.由 ...

  8. itunes未能连接到iphone_FonePaw iPhone Data Recovery mac版(iphone数据恢复工具)

    iphone数据丢失?想要恢复iphone丢失的数据?FonePaw iPhone Data Recovery for mac是一款功能强大的iPhone手机数据的数据恢复软件.使用能够帮助用户快速恢 ...

  9. excel文件修复工具_Windows商店上架文件恢复工具!仅8.29MB,纯净无捆绑,80%修复率...

    一不小心删除或丢失电脑文件怎么办? 删除的文件也许可以通过回收站找回来,但是如果一不小心清理了,那就,嗯-- 其实,最近Windows商店上架了一款文件恢复工具Windows File Recover ...

最新文章

  1. 实现等待窗体的几种方式
  2. Jupyter Notebook显示图像
  3. 今天上班的乐趣是......
  4. 中判断字符串是否为空_leetcode1704_go_判断字符串的两半是否相似
  5. Socket编程实现简易聊天室
  6. 开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...
  7. 计算机硬件系统都是看得见的,计算机组成硬件系统).doc
  8. Java知识点总结(注解-内置注解)
  9. Redis面试 - 哨兵集群实现高可用
  10. 阔别七载,阿里港交所这对“初恋”再牵手
  11. 将多个markdown文件发布为一个html或pdf文件的方法梳理
  12. java object 数组_Java用Object实现数组队列的泛思与理解
  13. C++特性:封装、继承、多态
  14. Raki的读paper小记:ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS
  15. Play framework REST API
  16. 微信自动打开外部浏览器下载apk文件
  17. 学习andriod开发之 异步加载图片(二)--- 使用其他进度条
  18. 基于Docker的frp内网穿透
  19. Android 根据屏幕尺寸适配控件大小(按比例缩放)
  20. Spark-core项目实战——电商用户行为数据分析

热门文章

  1. 【手把手反内卷】开创全新AI多模态任务一视听分割:代码实践、优化教程(二)
  2. 计算机系统操作高级工考试题,计算机系统操作高级工试题和答案.doc
  3. 跨境电商难做?你需要知道这5个“低成本低风险”跨境电商项目
  4. Hbuilder mui 相册拍照图片上传
  5. Omap4470 USB驱动分析之注册过程
  6. 微软word如何插入页码_如何在Microsoft Word中插入,删除和管理超链接
  7. 使用ffmpeg调整图像大小
  8. 是什么引发了我对知识的渴望
  9. 【18】CSS基础(3)——理解层叠式
  10. android十大开源项目