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

相关文章
相关标签/搜索