背景:
binlog2sql是一个闪回工具,所谓闪回就是在误操作之后的挽回措施,比如误执行了一个delete语句,那么binlog2sql可以将这个delete语句变为insert语句,你重新执行下这个insert语句就好了,
官方文档:
https://Github.com/danfengcao/binlog2sql
安装:
yum install -y git
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
Python/ target=_blank class=infotextkey>Python get-pip.py
pip install -r requirements.txt
使用:
在my.cnf中添加如下参数后重启数据库:
[MySQLd]
server_id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 1G
binlog_format = row
binlog_row_image = full
在数据库中执行一条插入sql,假设是误操作,使用binlog2sql解析binlog中的这条sql
[root@localhost binlog2sql]# python binlog2sql/binlog2sql.py -uroot -p11111 -dzss -taa --start-file='mysql-bin.000016'
INSERT INTO `zss`.`aa`(`age`, `name`, `name1`) VALUES (5, 'a', 's'); #start 4 end 421 time 2023-05-08 15:03:32
使用binlog2sql反转误操作的sql
[root@localhost binlog2sql]# python binlog2sql/binlog2sql.py --flashback -uroot -p11111 -dzss -taa --start-file='mysql-bin.000016'
DELETE FROM `zss`.`aa` WHERE `age`=5 AND `name`='a' AND `name1`='s' LIMIT 1; #start 4 end 421 time 2023-05-08 15:03:32
进行闪回:
在数据库中执行上面反转得到的sql