mysql binlog 回退_MYSQL Binglog分析利器:binlog2sql使用详解

大部分使用mysql的业务也都会开启binlog,用以记录数据库的更新操作。当然binlog的格式大家也都比较清楚,分别是statement、mixed、row模式。针对row格式的binlog,它以二进制形式记录相应的SQL,通过编辑器打开无法知道具体的SQL是什么。当然,我们也可以通过mysqlbinlog分析,但分析结果不利于我们做数据的回滚和redo。前段时间同事分享了一个小工具binlog2sql,觉得蛮有意思,凑着今天有时间装了学习下。

一、binlog2sql简介

binlog2sql是一开源工具,其可以从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。

主要用途如下:

(1)数据快速回滚(闪回)

(2)主从切换后数据不一致的修复

(3)从binlog生成标准SQL,带来的衍生功能

二、binlog2sql安装

1、binlog2sql下载

https://github.com/danfengcao/binlog2sql

2、binlog2sql依赖包安装

python2.6+

PyMySQL==0.7.8+

wheel==0.24.0+

mysql-replication==0.9+

(1)PyMySQL-0.7.10安装

https://pypi.python.org/pypi/PyMySQL/

[root@node1 binlogsql]# tar -xzvf PyMySQL-0.7.10.tar.gz

[root@node1 binlogsql]# cd PyMySQL-0.7.10

[root@node1 PyMySQL-0.7.10]# python setup.py install

(2)wheel-0.30.0a0安装

https://pypi.python.org/pypi/wheel/

[root@node1 binlogsql]# tar -xzvf wheel-0.30.0a0.tar.gz

[root@node1 binlogsql]# cd wheel-0.30.0a0

[root@node1 wheel-0.30.0a0]# python setup.py install

(3)python-mysql-replication安装

https://github.com/noplay/python-mysql-replication

[root@node1 binlogsql]# unzip python-mysql-replication-master.zip

[root@node1 binlogsql]# cd python-mysql-replication-master

[root@node1 python-mysql-replication-master]# python setup.py  install

(4)可以通过pip安装相应的依赖包

https://pypi.python.org/pypi/pip

[root@node1 tools]# tar -xzvf pip-9.0.1.tar.gz

[root@node1 tools]# cd pip-9.0.1

[root@node1 pip-9.0.1]# python setup.py install

[root@node1 binlog2sql-master]# pip install  -r requirements.txt

3、binlog2sql安装

直接下载解压缩即可,运行相应的py脚本

[root@node1 tools]# unzip binlog2sql-master.zip

[root@node1 tools]# cd binlog2sql-master

设置别名,方便命令调用:

alias binlog2sql='python /tools/binlogsql/binlog2sql-master/binlog2sql/binlog2sql.py'

三、binlog2sql使用1、binlog2sql帮助手册

[root@node1 binlog2sql]# binlog2sql  --help

usage: binlog2sql.py [-h HOST] [-u USER] [-p PASSWORD] [-P PORT]

[--start-file STARTFILE] [--start-position STARTPOS]

[--stop-file ENDFILE] [--stop-position ENDPOS]

[--start-datetime STARTTIME] [--stop-datetime STOPTIME]

[--stop-never] [--help] [-d [DATABASES [DATABASES ...]]]

[-t [TABLES [TABLES ...]]] [-K] [-B]

Parse MySQL binlog to SQL you want

optional arguments:

--stop-never          Wait for more data from the server. default: stop

replicate at the last binlog when you start binlog2sql ##持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置

--help                help infomation

-K, --no-primary-key  Generate insert sql without primary key if exists##对INSERT语句去除主键。可选。

-B, --flashback       Flashback data to start_postition of start_file ##生成回滚语句,可解析大文件,不受内存限制,每打印一千行加一句SLEEP SELECT(1)。可选。与stop-never或no-primary-key不能同时添加。

connect setting:

-h HOST, --host HOST  Host the MySQL database server located

-u USER, --user USER  MySQL Username to log in as

-p PASSWORD, --password PASSWORD

MySQL Password to use

-P PORT, --port PORT  MySQL port to use

range filter:

--start-file STARTFILE

Start binlog file to be parsed  ##起始解析文件。必须。

--start-position STARTPOS, --start-pos STARTPOS##start-file的起始解析位置。可选。默认为start-file的起始位置。

Start position of the --start-file

--stop-file ENDFILE, --end-file ENDFILE           ##末尾解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。

Stop binlog file to be parsed. default: '--start-file'

--stop-po

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值