一、部署
1.安装binlog2sql前先安装git和pip:
yum -y install epel-release
yum -y install git python-pip
2.安装binlog2sql:
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip install -r requirements.txt
3.用户权限
SELECT, REPLICATION SLAVE, REPLICATION CLIENT
4.二进制日志要求
binlog_format = row
binlog_row_image = full
二、使用
1.参数表
参数 | 解释 | 可选项 |
-h | host地址 | |
-u | 用户名 | |
-p | 密码 | |
-P | 端口 | |
--start-file | 起始二进制文件 | |
--start-position | 起始pos点 | |
--stop-file | 终止二进制文件 | |
--stop-position | 终止pos点 | |
-d | 数据库名 | |
-t | 表名 | |
--only-dml | 只显示dml,忽略ddl | |
--sql-type | sql类型 | delete,insert,update |
--help | 帮助项 | |
--stop-never | 连续解析二进制日志,直到最后 | |
-K, --no-primary-key | 生成不带主键的插入sql | |
-B, --flashback | 闪回数据到起始二进制文件的起始节点 | |
--back-interval | 每1000个sql回滚块的睡眠时间,如果不设置则为0 |
2.具体使用范例
2.1 建表
create table test_1(
id int(10) not null auto_increment primary key,
user_name varchar(20),
user_age tinyint(1),
user_info varchar(50)
);
2.2 插入数据
insert into test_1(user_name,user_age,user_info) values('zhang',12,'acd'),('zhangasd',12,'acd'),
('zhang',22,'acd'),('zhaxng',12,'xc'),('zxchang',13,'acd'),('zhdfang',12,'acd'),
('zhanccg',25,'acd'),('zhang',12,'acd'),('zhaxcng',12,'acd'),('lizhang',12,'acd'),('zhang',12,'we'),
('zhxvang',12,'acd'),('zhazng',15,'dxv'),('zhadng',17,'zdv'),('zhqzang',12,'zdcs'),
('zhang',12,'acasdad'),('zdvsdasd',18,'aecd'),('zhsdang',12,'dddd'),('zhasdng',32,'acqqqd'),('zsdhang',32,'aczzzzd'),
('zsdhang',14,'adddcd'),('zhang',16,'acddd'),('zahang',31,'acd'),('zahang',52,'fedf'),('zhang',42,'acrfwed'),
('zhxdang',18,'adfscd'),('zhadang',22,'axcvcd'),('zhxdang',32,'asdacd'),('zhaxdng',19,'acasd');
2.3 操作数据数据进行测试
# 位置:mysql-bin.000001,90348556
delete from test_1 where id=19;
# 位置:mysql-bin.000001,90348854
update test_1 set user_age=33 where id>16 and and<20;
# 位置:mysql-bin.000001,90648971
insert into test_1(user_name,user_age,user_info) values('lisi',22,'cb'),('feiren',32,'amd'),('niupi',22,'acd'),('nicai',12,'xc');
# 位置:mysql-bin.000001,90649310
2.4 binlog2sql的使用
# 获得执行的sql
python3 binlog2sql.py -hlocalhost -P3306 -urb_user -p -d rollback_test -t test_1 --start-file 'mysql-bin.000001' --start-position=90348556 --stop-file='mysql-bin.000001' --stop-position=90348854 > 1.sql
# 获得回滚的sql
python3 binlog2sql.py -hlocalhost -P3306 -urb_user -p -d rollback_test -t test_1 -B --start-file 'mysql-bin.000001' --start-position=90348556 --stop-file='mysql-bin.000001' --stop-position=90348854 > 2.sql
# 获得原始为delete语句的sql的回滚语句
python3 binlog2sql.py -hlocalhost -P3306 -urb_user -p -d rollback_test -t test_1 -B --start-file 'mysql-bin.000001' --start-position=90348556 --stop-file='mysql-bin.000001' --stop-position=90649310 --sql-type 'delete'> 3.sql
大概的使用场景就是这样了,希望能帮到你