mysql數據恢復,利用binlog2sql快速閃回

1、環境設置python

1.mysql配置中首先要開啓binlog,如沒開啓,在my.conf 下配置以下參數:mysql

 

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 100M
binlog-format = row

ps:另外需保持日誌目錄權限mysql:mysql權限可寫,否則配置從新mysql後會報錯nginx

2.安裝開源工具binlog2sql。binlog2sql是一款簡單易用的binlog解析工具,其中一個功能就是生成回滾SQL。git

git clone https://github.com/danfengcao/binlog2sql.git
pip install -r requirements.txt

運行pip命令報錯的:github

請運行命令安裝:sql

apt-get install python-pip數據庫

成功後再運行工具

pip install -r requirements.txtui

這樣,環境已經設置成功了。日誌

 

2、恢復數據

1.我在2017年1月23號11點左右誤刪數據庫test中的整個表tags的數據。

2.登陸mysql,查看目前的binlog文件

最新的binlog文件是mysql-bin.000001,咱們再定位誤操做SQL的binlog位置。誤操做人只能知道大體的誤操做時間,咱們根據大體時間過濾數據。運行命令:

sudo python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'root' -dtest -ttags --start-file='mysql-bin.000001' --start-datetime='2017-01-23 11:00:00' --stop-datetime='2017-01-23 11:50:00'

結果輸出:

3.而後咱們獲得要恢復的數據是在日誌的4-365行,實際狀況根據本身須要恢復那一夥,運行命令:

sudo sh -c "python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'root' -dtest -ttags --start-file='mysql-bin.000001' --start-position=4 --stop-position=365 -B > rollback1.sql | cat"

最後,我打開生成後的rollback1.sql文件看看:

sql恢復成功!

相關文章
相關標籤/搜索