[root@tpcc01 ~]# tar Python-3.6.1.tgz [root@tpcc01 ~]# cd Python-3.6.1 [root@tpcc01 Python-3.6.1]# ./configure --prefix=/usr/local/python3 [root@tpcc01 Python-3.6.1]# make && make install [root@tpcc01 ~]# rm -rf /usr/bin/python [root@tpcc01 ~]# rm -rf /usr/bin/pip [root@tpcc01 ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python [root@tpcc01 ~]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip [root@tpcc01 ~]# vi /etc/profile PATH=$PATH:$HOME/bin:/usr/local/python3/bin [root@tpcc01 ~]# python -V Python 3.6.1 [root@tpcc01 ~]# pip -V pip 9.0.1 from /usr/local/python3/lib/python3.6/site-packages (python 3.6) [root@tpcc01 ~]# pip install --upgrade pip Collecting pip Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 320kB/s Installing collected packages: pip Found existing installation: pip 9.0.1 Uninstalling pip-9.0.1: Successfully uninstalled pip-9.0.1 Successfully installed pip-18.0 [root@tpcc01 ~]# pip -V pip 18.0 from /usr/local/python3/lib/python3.6/site-packages/pip (python 3.6) [root@tpcc01 ~]# which yum /usr/bin/yum [root@tpcc01 ~]# vi /usr/bin/yum #!/usr/bin/python2.6
https://github.com/danfengcao/binlog2sql [root@tpcc01 ~]# unzip binlog2sql-master.zip Archive: binlog2sql-master.zip 42c6f5353b2cb36ef97eb73b1e111cb028be4cc1 creating: binlog2sql-master/ inflating: binlog2sql-master/.gitignore inflating: binlog2sql-master/LICENSE inflating: binlog2sql-master/README.md creating: binlog2sql-master/binlog2sql/ inflating: binlog2sql-master/binlog2sql/__init__.py inflating: binlog2sql-master/binlog2sql/binlog2sql.py inflating: binlog2sql-master/binlog2sql/binlog2sql_util.py creating: binlog2sql-master/example/ inflating: binlog2sql-master/example/mysql-flashback-priciple-and-practice.md inflating: binlog2sql-master/requirements.txt creating: binlog2sql-master/tests/ inflating: binlog2sql-master/tests/test_binlog2sql_util.py [root@tpcc01 ~]# cd binlog2sql-master [root@tpcc01 binlog2sql-master]# pip install -r requirements.txt [root@tpcc01 binlog2sql-master]# cd binlog2sql/ [root@tpcc01 binlog2sql]# python binlog2sql.py --help usage: binlog2sql.py [-h HOST] [-u USER] [-p [PASSWORD [PASSWORD ...]]] [-P PORT] [--start-file START_FILE] [--start-position START_POS] [--stop-file END_FILE] [--stop-position END_POS] [--start-datetime START_TIME] [--stop-datetime STOP_TIME] [--stop-never] [--help] [-d [DATABASES [DATABASES ...]]] [-t [TABLES [TABLES ...]]] [--only-dml] [--sql-type [SQL_TYPE [SQL_TYPE ...]]] [-K] [-B] [--back-interval BACK_INTERVAL]
[root@tpcc01 ~]# mysql -uroot -pabcd.1234 mysql> grant select,replication client,replication slave on *.* to 'fsadmin'@'%' identified by 'fsadmin'; mysql> flush privileges; mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000008 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) [root@tpcc01 mysql]# mysql -utpcc -ptpcc +---------------------+ | now() | +---------------------+ | 2018-09-08 14:54:47 | +---------------------+ 1 row in set (0.00 sec) mysql> use tpcc1000 mysql> select * from warehouse; +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ | w_id | w_name | w_street_1 | w_street_2 | w_city | w_state | w_zip | w_tax | w_ytd | +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ | 1 | SvWLe7MR | HBqhp7iLx2d | GgXTBGT66OY0 | re1D3hSCXA0csLX | wT | 298418882 | 0.18 | 2209704.00 | | 2 | EBTnML | w1E06UXZbT | QWmQhQDjyGeNasW1fs | xoO9oTdJ0EmHdH23yS | hQ | 117286569 | 0.14 | 2290690.00 | | 3 | t3c0yRgkG | BU0VwyE02yxAKOPk2htd | mghlc9RMP0Vr00mx | mx9j7R7VB7C5iJpO1a18 | LX | 988527633 | 0.20 | 2221100.00 | | 4 | eJzr9ZNIC | O0ITIrUeII | ScIE1mzCKlpeiglH | 3RURRmvidPMwfsMHAZG | YT | 947484925 | 0.11 | 2157841.00 | | 5 | C2yQ6rmr | ANAu7l2RCZO | ptrr6cyYn9jp8 | txwlX46hyCQ0dbX2VN | MC | 344473555 | 0.17 | 2138783.00 | | 6 | QTGq94MH | YkGyqiDp1mW3hRP | IrjTFBrgPgqR272ZrIXf | kUzWz2BQPbgG | 9U | 648427113 | 0.11 | 2144344.00 | | 7 | 6XpPXaD3lI | fpWiU8IKKAVEjcU | 39wlFRYdy8q0s9 | XyBEQIWlcfE | Oq | 247871720 | 0.13 | 2284626.00 | | 8 | hpLmvMZBIl | cKAzl0YwfM6gLwTW2bAG | xa2suZ4CKTmedl | dJIGfOwzIOTKzdZFb | FR | 675847971 | 0.11 | 2157074.00 | | 9 | P6cQ9e9lC0 | sq0FNH8HRVv7ofA | AjXz8bbZkDgVQg | GVrVs6e7V73cvgnfoWC | en | 551087427 | 0.16 | 2089786.00 | | 10 | tb4urdUOl | KHhTuZADB7 | xX4od0e7Qq | zutpVNDGyYWdzOCA | LF | 002092458 | 0.17 | 2198344.00 | +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ 10 rows in set (0.00 sec) mysql> delete from warehouse; Query OK, 10 rows affected (0.01 sec) mysql> select * from warehouse; Empty set (0.00 sec) mysql> select now(); +---------------------+ | now() | +---------------------+ | 2018-09-08 14:56:26 | +---------------------+ 1 row in set (0.00 sec)
[root@tpcc01 binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -ufsadmin -p'fsadmin' -dtpcc1000 --start-file='mysql-bin.000008' \ > --start-datetime='2018-09-08 14:54:47' \ > --stop-datetime='2018-09-08 14:56:26' DELETE FROM `tpcc1000`.`test` WHERE `w_id`=10 AND `w_name`='tb4urdUOl' AND `w_street_1`='KHhTuZADB7' AND `w_street_2`='xX4od0e7Qq' AND `w_city`='zutpVNDGyYWdzOCA' AND `w_state`='LF' AND `w_zip`='002092458' AND `w_tax`=0.17 AND `w_ytd`=2198344.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=9 AND `w_name`='P6cQ9e9lC0' AND `w_street_1`='sq0FNH8HRVv7ofA' AND `w_street_2`='AjXz8bbZkDgVQg' AND `w_city`='GVrVs6e7V73cvgnfoWC' AND `w_state`='en' AND `w_zip`='551087427' AND `w_tax`=0.16 AND `w_ytd`=2089786.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=8 AND `w_name`='hpLmvMZBIl' AND `w_street_1`='cKAzl0YwfM6gLwTW2bAG' AND `w_street_2`='xa2suZ4CKTmedl' AND `w_city`='dJIGfOwzIOTKzdZFb' AND `w_state`='FR' AND `w_zip`='675847971' AND `w_tax`=0.11 AND `w_ytd`=2157074.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=7 AND `w_name`='6XpPXaD3lI' AND `w_street_1`='fpWiU8IKKAVEjcU' AND `w_street_2`='39wlFRYdy8q0s9' AND `w_city`='XyBEQIWlcfE' AND `w_state`='Oq' AND `w_zip`='247871720' AND `w_tax`=0.13 AND `w_ytd`=2284626.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=6 AND `w_name`='QTGq94MH' AND `w_street_1`='YkGyqiDp1mW3hRP' AND `w_street_2`='IrjTFBrgPgqR272ZrIXf' AND `w_city`='kUzWz2BQPbgG' AND `w_state`='9U' AND `w_zip`='648427113' AND `w_tax`=0.11 AND `w_ytd`=2144344.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=5 AND `w_name`='C2yQ6rmr' AND `w_street_1`='ANAu7l2RCZO' AND `w_street_2`='ptrr6cyYn9jp8' AND `w_city`='txwlX46hyCQ0dbX2VN' AND `w_state`='MC' AND `w_zip`='344473555' AND `w_tax`=0.17 AND `w_ytd`=2138783.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=4 AND `w_name`='eJzr9ZNIC' AND `w_street_1`='O0ITIrUeII' AND `w_street_2`='ScIE1mzCKlpeiglH' AND `w_city`='3RURRmvidPMwfsMHAZG' AND `w_state`='YT' AND `w_zip`='947484925' AND `w_tax`=0.11 AND `w_ytd`=2157841.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=3 AND `w_name`='t3c0yRgkG' AND `w_street_1`='BU0VwyE02yxAKOPk2htd' AND `w_street_2`='mghlc9RMP0Vr00mx' AND `w_city`='mx9j7R7VB7C5iJpO1a18' AND `w_state`='LX' AND `w_zip`='988527633' AND `w_tax`=0.20 AND `w_ytd`=2221100.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=2 AND `w_name`='EBTnML' AND `w_street_1`='w1E06UXZbT' AND `w_street_2`='QWmQhQDjyGeNasW1fs' AND `w_city`='xoO9oTdJ0EmHdH23yS' AND `w_state`='hQ' AND `w_zip`='117286569' AND `w_tax`=0.14 AND `w_ytd`=2290690.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 DELETE FROM `tpcc1000`.`test` WHERE `w_id`=1 AND `w_name`='SvWLe7MR' AND `w_street_1`='HBqhp7iLx2d' AND `w_street_2`='GgXTBGT66OY0' AND `w_city`='re1D3hSCXA0csLX' AND `w_state`='wT' AND `w_zip`='298418882' AND `w_tax`=0.18 AND `w_ytd`=2209704.00 LIMIT 1; #start 182687 end 183701 time 2018-09-08 14:55:59 [root@tpcc01 binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -ufsadmin -p'fsadmin' -dtpcc1000 --start-file='mysql-bin.000008' \ > --start-position=182687 --stop-position=183701 -B > rollback.sql [root@tpcc01 binlog2sql]# cat rollback.sql INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (1, 'SvWLe7MR', 'HBqhp7iLx2d', 'GgXTBGT66OY0', 're1D3hSCXA0csLX', 'wT', '298418882', 0.18, 2209704.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (2, 'EBTnML', 'w1E06UXZbT', 'QWmQhQDjyGeNasW1fs', 'xoO9oTdJ0EmHdH23yS', 'hQ', '117286569', 0.14, 2290690.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (3, 't3c0yRgkG', 'BU0VwyE02yxAKOPk2htd', 'mghlc9RMP0Vr00mx', 'mx9j7R7VB7C5iJpO1a18', 'LX', '988527633', 0.20, 2221100.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (4, 'eJzr9ZNIC', 'O0ITIrUeII', 'ScIE1mzCKlpeiglH', '3RURRmvidPMwfsMHAZG', 'YT', '947484925', 0.11, 2157841.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (5, 'C2yQ6rmr', 'ANAu7l2RCZO', 'ptrr6cyYn9jp8', 'txwlX46hyCQ0dbX2VN', 'MC', '344473555', 0.17, 2138783.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (6, 'QTGq94MH', 'YkGyqiDp1mW3hRP', 'IrjTFBrgPgqR272ZrIXf', 'kUzWz2BQPbgG', '9U', '648427113', 0.11, 2144344.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (7, '6XpPXaD3lI', 'fpWiU8IKKAVEjcU', '39wlFRYdy8q0s9', 'XyBEQIWlcfE', 'Oq', '247871720', 0.13, 2284626.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (8, 'hpLmvMZBIl', 'cKAzl0YwfM6gLwTW2bAG', 'xa2suZ4CKTmedl', 'dJIGfOwzIOTKzdZFb', 'FR', '675847971', 0.11, 2157074.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (9, 'P6cQ9e9lC0', 'sq0FNH8HRVv7ofA', 'AjXz8bbZkDgVQg', 'GVrVs6e7V73cvgnfoWC', 'en', '551087427', 0.16, 2089786.00); #start 182687 end 183701 time 2018-09-08 14:55:59 INSERT INTO `tpcc1000`.`test`(`w_id`, `w_name`, `w_street_1`, `w_street_2`, `w_city`, `w_state`, `w_zip`, `w_tax`, `w_ytd`) VALUES (10, 'tb4urdUOl', 'KHhTuZADB7', 'xX4od0e7Qq', 'zutpVNDGyYWdzOCA', 'LF', '002092458', 0.17, 2198344.00); #start 182687 end 183701 time 2018-09-08 14:55:59 [root@tpcc01 binlog2sql]# mysql -utpcc -ptpcc < rollback.sql
[root@tpcc01 ~]# mysql -utpcc -ptpcc mysql> use tpcc1000 Database changed mysql> select * from test; +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ | w_id | w_name | w_street_1 | w_street_2 | w_city | w_state | w_zip | w_tax | w_ytd | +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ | 1 | SvWLe7MR | HBqhp7iLx2d | GgXTBGT66OY0 | re1D3hSCXA0csLX | wT | 298418882 | 0.18 | 2209704.00 | | 2 | EBTnML | w1E06UXZbT | QWmQhQDjyGeNasW1fs | xoO9oTdJ0EmHdH23yS | hQ | 117286569 | 0.14 | 2290690.00 | | 3 | t3c0yRgkG | BU0VwyE02yxAKOPk2htd | mghlc9RMP0Vr00mx | mx9j7R7VB7C5iJpO1a18 | LX | 988527633 | 0.20 | 2221100.00 | | 4 | eJzr9ZNIC | O0ITIrUeII | ScIE1mzCKlpeiglH | 3RURRmvidPMwfsMHAZG | YT | 947484925 | 0.11 | 2157841.00 | | 5 | C2yQ6rmr | ANAu7l2RCZO | ptrr6cyYn9jp8 | txwlX46hyCQ0dbX2VN | MC | 344473555 | 0.17 | 2138783.00 | | 6 | QTGq94MH | YkGyqiDp1mW3hRP | IrjTFBrgPgqR272ZrIXf | kUzWz2BQPbgG | 9U | 648427113 | 0.11 | 2144344.00 | | 7 | 6XpPXaD3lI | fpWiU8IKKAVEjcU | 39wlFRYdy8q0s9 | XyBEQIWlcfE | Oq | 247871720 | 0.13 | 2284626.00 | | 8 | hpLmvMZBIl | cKAzl0YwfM6gLwTW2bAG | xa2suZ4CKTmedl | dJIGfOwzIOTKzdZFb | FR | 675847971 | 0.11 | 2157074.00 | | 9 | P6cQ9e9lC0 | sq0FNH8HRVv7ofA | AjXz8bbZkDgVQg | GVrVs6e7V73cvgnfoWC | en | 551087427 | 0.16 | 2089786.00 | | 10 | tb4urdUOl | KHhTuZADB7 | xX4od0e7Qq | zutpVNDGyYWdzOCA | LF | 002092458 | 0.17 | 2198344.00 | +------+------------+----------------------+----------------------+----------------------+---------+-----------+-------+------------+ 10 rows in set (0.00 sec)