MYSQL工具之binlog2sql閃回操做

文檔結構:html

 

在生產環境中若是遇到誤刪,改錯數據的狀況,利用mysql閃回工具binlog2sql,能夠實現數據的快速回滾,從binlog中提取SQL,並能生成回滾SQL語句。Binlog以event做爲單位記錄數據庫變動的數據信息,閃回就是能夠重現這些變化數據信息以前的操做。也就是說,對於insert操做,會生成相反的update語句。這塊工具只能使用在binlog格式爲row模式下,且只支持DML語句不支持DDL語句。python

binlog2sql下載地址:https://github.com/danfengcao/binlog2sqlmysql

依賴包連接:git

https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密碼:gnz8github

setup-tools下載地址:sql

https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg數據庫

python2.7下載地址:https://www.python.org/downloads/python2.7

 實驗環境:ide

數據庫版本:工具

mysql5.7.20

操做系統:red-hat 6.7

 python:2.7.15

 

一、環境準備

一、安裝python2.7

1.1首先安裝python2.7(6.x默認是安裝2.6)

安裝參考:http://www.cnblogs.com/balaamwe/p/3480430.html

[root@mysql5 binlog2sql-master]# rpm -qa|grep make

make-3.81-20.el6.x86_64

automake-1.11.1-4.el6.noarch

cmake-2.8.12.2-4.el6.x86_64

 

若是沒有安裝make工具

yum -y install gcc automake autoconf libtool make

 

查看是否安裝zlib庫

rpm -qa|grep zlib

zlib-1.2.3-29.el6.x86_64

zlib-devel-1.2.3-29.el6.x86_64

 

安裝zlib

yum install zlib-devel

 

檢查是否安裝ssl 庫

[root@mysql5 binlog2sql-master]# rpm -qa|grep openssl

openssl-1.0.1e-42.el6.x86_64

openssl-devel-1.0.1e-42.el6.x86_64

 

安裝openssl

yum install openssl*

安裝bzip2依賴庫

yum install -y bzip2*

 

2. 編譯安裝python2.7.15

 

cp /soft/Python-2.7.15.tgz /usr/src/

  cd /usr/src/

  tar -zxvf Python-2.7.15.tgz

vi /usr/src/Python-2.7.15/Modules/Setup.dist

 

 找到   

 

#SSL=/usr/local/ssl

#_ssl _ssl.c \

#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \

#       -L$(SSL)/lib -lssl -lcrypto
......
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

 

 把註釋去掉

 編譯

 

cd /usr/src/Python-2.7.15

./configure --prefix=/usr/local/python2.7

make all

make install

make clean

make distclean

 

(一句一句粘貼)

 

 

創建python2.7 軟鏈

mv /usr/bin/python /usr/bin/python.bak

ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7

ln -s /usr/bin/python2.7 /usr/bin/python

  

 

二、安裝setup-tools

chmod 775 setuptools-0.6c11-py2.7.egg

sh setuptools-0.6c11-py2.7.egg

  

三、安裝依賴包

(1)PyMySQL-0.8.0安裝

tar -zxvf PyMySQL-0.8.0.tar.gz

cd PyMySQL-0.8.0

python setup.py install

 

 

(2)wheel-0.31.0安裝

tar -xzvf wheel-0.31.0.tar.gz

cd wheel-0.31.0

python setup.py install

 

 (3)python-mysql-replication安裝

unzip python-mysql-replication-master.zip

cd python-mysql-replication-master

python setup.py install

 

 

(4)經過pip安裝相應的依賴包

tar -xzvf pip-10.0.1.tar.gz

cd pip-10.0.1

python setup.py install

 

 

解壓binlog2sql軟件:

unzip binlog2sql-master.zip

 

cd /soft/binlog2sql-master

pip install -r requirements.txt(前面包都安裝成功後,這句就能夠不用了)

 

 

二、恢復演練

一、查看參數使用

cd /soft/binlog2sql-master/binlog2sql/

python binlog2sql.py --help

 

 

值得注意的就是--start-datetime,--stop-datetime格式爲datetime即%Y-%m-%d %H:%M:%S。

 

二、閃回要求

一、mysql 服務是開啓,離線沒法進行binlog。

二、binlog_format 必須是ROW格式。

三、DDL語句沒法作到閃回,只能解析DML語句。

 

三、DML語句閃回測試

刪除test庫下a1表的前2000行(共10000行)

 

 

delete from a1 limit 2000;(drop table 是不可以閃回的)

select count(*) from a1;

 

 

a)     test庫建立閃回用戶

grant select,replication slave,replication client on *.* to 'flash'@'%' identified by 'flash';

 

 

查看當前binlog

 

 

當前binlog文件是mysql-binlog.000008,預估一下剛剛操做時間(因爲測試機上時間不許,未帶時間)。

cd /soft/binlog2sql-master/binlog2sql/

 

python binlog2sql.py -h127.0.0.1 -P3307 -uflash -pflash -dtest -ta1 --start-file='mysql-binlog.000008'

查看生成的恢復語句。

 

已下僅爲一部分

 

 

能夠看得SQL位置是在259到10446之間,進行過濾,生成回滾SQL。

 

python binlog2sql.py -h127.0.0.1 -P3307 -uflash -pflash -dtest -ta1 --start-file='mysql-binlog.000008' --start-position=259 --stop-position=10446 -B >> flashback.sql

 

 

最後應用回滾SQL語句:

source /soft/binlog2sql-master/binlog2sql/flashback.sql

 

 

測試成功!

相關文章
相關標籤/搜索