MYSQL数据库闪回工具: binlog2sql

[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)


猜你喜欢

转载自blog.51cto.com/13598811/2172142