点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!
MySQL
平台:Linux
[mysqld]server_id = 1log_bin = data/mysql/log/binary/mysql-bin.logmax_binlog_size = 1Gbinlog_format = rowbinlog_row_image = full
select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句
super/replication client:两个权限都可以,需要执行'SHOW MASTER STATUS', 获取server端的binlog列表
replication slave:通过BINLOG_DUMP协议获取binlog内容的权限
mysql连接配置
解析模式
解析范围控制
对象过滤
mysql> show global variables like 'binlog_format';+---------------+-------+| Variable_name | Value |+---------------+-------+| binlog_format | ROW |+---------------+-------+1 row in set (0.00 sec)mysql>mysql> show master status;+------------------+----------+| File | Position |+------------------+----------+| mysql-bin.000107 | 120 |+------------------+----------+1 row in set (0.00 sec)mysql> select * from tb1;+------+------+| id | name |+------+------+| 1 | aa || 2 | bb |+------+------+2 rows in set (0.00 sec)mysql>
mysql> insert into tb1 values (3,'cc');Query OK, 1 row affected (0.00 sec)mysql> insert into tb1 values (4,'dd');Query OK, 1 row affected (0.00 sec)mysql> update tb1 set name='new_aa' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> delete from tb1 where id=2;Query OK, 1 row affected (0.00 sec)mysql> select * from tb1;+------+--------+| id | name |+------+--------+| 1 | new_aa || 3 | cc || 4 | dd |+------+--------+3 rows in set (0.00 sec)mysql>
[root@db_server_xuanzhi ~]#python binlog2sql.py -uroot -h127.0.0.1 -proot -dxuanzhi --start-file='mysql-bin.000107' > xuanzhi.sql[root@db_server_xuanzhi ~]#cat xuanzhi.sqlINSERT INTO `xuanzhi`.`tb1`(`id`, `name`) VALUES (3, 'cc'); #start 4 end 290 time 2022-01-23 10:41:34INSERT INTO `xuanzhi`.`tb1`(`id`, `name`) VALUES (4, 'dd'); #start 321 end 491 time 2022-01-23 10:41:38UPDATE `xuanzhi`.`tb1` SET `id`=1, `name`='new_aa' WHERE `id`=1 AND `name`='aa' LIMIT 1; #start 522 end 705 time 2022-01-23 10:41:42DELETE FROM `xuanzhi`.`tb1` WHERE `id`=2 AND `name`='bb' LIMIT 1; #start 736 end 906 time 2022-01-23 10:41:50[root@db_server_xuanzhi ~]#
[root@db_server_xuanzhi ~]#python binlog2sql.py -uroot -h127.0.0.1 -proot -dxuanzhi --start-file='mysql-bin.000107' -B > rollback_xuanzhi.sql[root@db_server_xuanzhi ~]#cat rollback_xuanzhi.sql INSERT INTO `xuanzhi`.`tb1`(`id`, `name`) VALUES (2, 'bb'); #start 736 end 906 time 2022-01-23 10:41:50UPDATE `xuanzhi`.`tb1` SET `id`=1, `name`='aa' WHERE `id`=1 AND `name`='new_aa' LIMIT 1; #start 522 end 705 time 2022-01-23 10:41:42DELETE FROM `xuanzhi`.`tb1` WHERE `id`=4 AND `name`='dd' LIMIT 1; #start 321 end 491 time 2022-01-23 10:41:38DELETE FROM `xuanzhi`.`tb1` WHERE `id`=3 AND `name`='cc' LIMIT 1; #start 4 end 290 time 2022-01-23 10:41:34[root@db_server_xuanzhi ~]#
mysql> use xuanzhiDatabase changedmysql> source /tmp/rollback_xuanzhi.sql

本文作者:赵栋辉
本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




