使用MySQL第三方工具binlog2sql
binlog2sql,一款基于python开发的开源工具,是由大众点评团队的DBA使用python开发出来的,从MySQL
binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。其功能有:
数据快速回滚(闪回)
主从切换后新master丢失数据的恢复
从binlog生成标准SQL,带来的衍生功能
一、安装python
1、安装python3环境(Linux本省自带python2环境)
安装依赖:
yum install -y gcc gcc-c++ zlib zlib-devel libffi-devel openssl openssl-devel pcre pcre-devel yum-utils vim wget tree htop sqlite-devel
2、解压配置Python-3.6.5.tgz
安装
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -zxf Python-3.6.5.tgz
配置安装参数
./configure --prefix=/usr/local/Python-3.6.5
编译安装
make && make install
3、添加软链接,让python3和pip3这两个命令指向刚刚安装的python3.6
ln -s /usr/local/python3.6/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3.6/bin/pip3.7 /usr/bin/pip3
4、验证
python3 --version
pip3 --version
pip3 list 提示升级pip
python3 -m pip install --upgrade pip
二、安装binlog2sql
shell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
shell> pip install -r requirements.txt
再安装binlog2sql解析所需要的包
pip3 install mysql-replication-0.13.tar.gz
pip3 install PyMySQL-0.9.3.tar.gz
pip3 install wheel-0.34.2-py2.py3-none-any.whl
pip3 list
所用到的包在这里
https://download.csdn.net/download/weixin_44090237/88618756?spm=1001.2014.3001.5503
三、MySQL操作
1、进入MySQL确认是否开启binlog日志
show variables like 'log%';
如未开启,修改/etc/my.cnf文件,添加如下参数
[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format = row
添加完重启MySQL服务
systemctl restart mysqld
2、创建并删除测试数据
create table user;
insert into user ;
delete from user;
3、查看当前binlog文件
show master status;
四、解析出标准SQL
python3 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'123456' -dtest -t user --start-file='mysql-bin.000002'
五、解析出回滚SQL
根据时间解析
python3 binlog2sql.py --flashback -h127.0.0.1 -P3306 -uroot -p'123456' -dtest -t user --start-file='mysql-bin.000002' --start-datetime='2023-12-07 16:59:49' --stop-datetime='2023-12-11 11:17:20' > user.txt
六、还原sql
解析拿到的sql做处理
awk -F ‘;’ ‘{print $1 “;”}’ user .txt > user.txt
cat user.txt |grep “INSERT” > user.sql
最后回到MySQL
source user.sql