自己也遇到过生产环境数据被删除的情况,数据没了只能给一个个用户解释,下面介绍用插件回滚任意时刻的数据
插件 :binlog2sql
安装binlog2sql前先安装git和pip:
yum -y install epel-release
yum -y install git python-pip
第二步,git安装 binlog2sql
git clone https://github.com/danfengcao/binlog2sql.git
pip install -r requirements.txt
第三步:配置
在mysql文件 my.cnf中修改
server-id=123454 //5.7版本以上必须要
log-bin=/var/log/mysql/mysql-bin.log
binlog-format=row
第四步
重启 mysql
然后随便删除或修改数据库某张表的数据,/var/lib/mysql下会生成mysql-bin.000001的文件,如果这种类型文件太多,你并 不知道你操作的记录在哪个mysql-bin中,登录mysql查看
第五步,解析binlog,在binlog2Sql目录下
命令:python binlog2sql.py -h127.0.0.1 -P3306 -u你的用户名 -p'你的数据库密码’ -d你的数据库 -t你的表 --start-file='mysql-bin.000002'
结果 DELETE FROM `qsyx`.`w_team` WHERE `team_name`='1213' AND `enable`=0 AND `id`=12 AND `image`='https://xqbstyle.oss-cn-hangzhou.aliyuncs.com/images/title.png' AND `created`='2018-05-05 11:08:02' LIMIT 1; #start 4 end 466 time 2018-05-17 16:03:50
第六步 生成回滚sql,并检查回滚sql是否正确
命令: python binlog2sql.py -h127.0.0.1 -P3306 -u你的用户名 -p'你的数据库密码’ -d你的数据库 -t你的表 --start-file='mysql-bin.000002' --start-pos=4 --end-pos=466 -B
结果:INSERT INTO `qsyx`.`w_team`(`team_name`, `enable`, `id`, `image`, `created`) VALUES ('1213', 0, 12, 'https://xqbstyle.oss-cn-hangzhou.aliyuncs.com/images/title.png', '2018-05-05 11:08:02'); #start 4 end 466 time 2018-05-17 16:03:50
第七步 确认回滚sql正确,执行回滚语句。登录mysql,数据回滚成功。4
命令 python binlog2sql.py -h127.0.0.1 -P3306 -u你的用户名 -p'你的数据库密码’ -d你的数据库 -t你的表 --start-file='mysql-bin.000002' --start-pos=4 --end-pos=466 -B | mysql -h127.0.0.1 -P3306 -u你的用户名 -p'你的数据库密码’
结果 mysql: [Warning] Using a password on the command line interface can be insecure.