binlog2sql MySQL闪回工具

 

选项 mysql连接配置
-h host; -P port; -u user; -p password
解析模式
--stop-never 持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置。
-K, --no-primary-key 对INSERT语句去除主键。可选。
-B, --flashback 生成回滚语句,可解析大文件,不受内存限制,每打印一千行加一句SLEEP SELECT(1)。可选。与stop-never或no-primary-key不能同时添加。

 

解析范围控制
--start-file 起始解析文件。必须。
--start-position/--start-pos start-file的起始解析位置。可选。默认为start-file的起始位置。
--stop-file/--end-file 末尾解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。
--stop-position/--end-pos stop-file的末尾解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。
--start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
--stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。

 

对象过滤
-d, --databases 只输出目标db的sql。可选。默认为空。
-t, --tables 只输出目标tables的sql。可选。默认为空。

 

cd /tmp
#安装setuptools
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65 
tar -zxvf setuptools-12.0.3.tar.gz
cd setuptools-12.0.3
python setup.py install

需要先安装 git 和 pip
# -y install git 
pip 下载: 
wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
tar -xzvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install

#工具安装
mkdir -p cd /opt/scripts
cd /opt/scripts
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip install -r requirements.txt

#安装 PyMySQL
pip install PyMySQL


#测试
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO  'binlog2sql'@'127.0.0.1' identified by 'binlog2sql';

create database lf;
CREATE TABLE IF NOT EXISTS `T1`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into T1 (runoob_title,runoob_author,submission_date) values ('11','22',now());
insert into T1 (runoob_title,runoob_author,submission_date) values ('11','22',now());
insert into T1 (runoob_title,runoob_author,submission_date) values ('11','22',now());
insert into T1 (runoob_title,runoob_author,submission_date) values ('222','33',now());
insert into T1 (runoob_title,runoob_author,submission_date) values ('333','44',now());

#刷新日志
flush logs;
#查看当前日志所在log
show master logs;
mysql> show master logs;
+---------------------+-----------+
| Log_name            | File_size |
+---------------------+-----------+
| mysql-binlog.000001 |      3514 |
| mysql-binlog.000002 |       194 |
+---------------------+-----------+
2 rows in set (0.01 sec)

cd /opt/scripts/binlog2sql/binlog2sql
python binlog2sql.py --flashback -h127.0.0.1 -P3306 -u binlog2sql -p'binlog2sql' -dttt -t T1  --start-file='mysql-binlog.000017' --start-datetime='2019-07-22 11:30:11' ;
python binlog2sql.py  --flashback -h127.0.0.1 -P3305 -u binlog2sql -p'binlog2sql' -dlf -t T1 --start-file='mysql-binlog.000098' --start-position=118854520 --stop-position=118854752 ;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值