Linux: CentOS6
mysql version: mysql5.6.35
参考:网址:
https://www.cnblogs.com/ivictor/p/6418409.html
场景:数据库被业务进行sql注入,修改了表中某一列数据。
但是没找到合适的数据库备份集,于是想到了解析binlog日志然后进行sql解析的方法来进行恢复本张表。
1.安装binlog2sql
安装过程有些麻烦,下面是具体的安装步骤:
yum install python-setuptools -y
yum -y install git
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
pip包需要使用tar.gz包进行安装,手工下载
# tar zxvf pip-10.0.1.tar.gz
# cd pip-10.0.1
# python setup.py install
yum -y install pymysql
cd /home/mysql/binlog2sql
pip install -r requirements.txt
pip install PyMySQL
2. 把binlog日志解析为sql语句,如下:
-pxxxxpython binlog2sql/binlog2sql/binlog2sql.py -h127.0.0.01 -P4000 -uroot -pxxxx -d xxxx-t xxx --start-file='mysql-bin.000018' > userdb18.sql
python binlog2sql/binlog2sql/binlog2sql.py -h127.0.0.01 -P4000 -uroot -pxxxx -d xxxx-t xxxx --start-file='mysql-bin.000019' --stop-position= > userdb19.sql
3.逆向解析sql语句,即当时,delete的变成insert, 之前insert的变成delete
python binlog2sql/binlog2sql/binlog2sql.py --flashback -h127.0.0.01 -P4000 -uroot -pxxxx -d xxxx -t xxxx --start-file='mysql-bin.000019' --start-position=384693693 --stop-position=529503333> userdb.sql
参数说明:
参数和mysqlbinlog的非常擂同,到时搜一下就好了。
4.新建一个实例,把数据导入后,重新进行恢复,然后让业务人员把新的数据和老数据对比一下,即可以查看。