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恢復成功!