MYSQL工具之binlog2sql闪回操作
文档结构: 在生产环境中如果遇到误删,改错数据的情况,利用mysql闪回工具binlog2sql,可以实现数据的快速回滚,从binlog中提取SQL,并能生成回滚SQL语句。Binlog以event作为单位记录数据库变更的数据信息,闪回就是可以重现这些变化数据信息之前的操作。也就是说,对于insert操作,会生成相反的update语句。这块工具只能使用在binlog格式为row模式下,且只支持DML语句不支持DDL语句。 binlog2sql下载地址: 依赖包链接: https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密码:gnz8 setup-tools下载地址: python2.7下载地址: ?实验环境: 数据库版本: mysql5.7.20 操作系统:red-hat 6.7 ?python:2.7.15 ?1、环境准备1、安装python2.71.1首先安装python2.7(6.x默认是安装2.6) 安装参考:http://www.cnblogs.com/balaamwe/p/3480430.html [root@mysql5 binlog2sql-master]# rpm -qa|grep make make-3.81-20.el6.x86_64 automake-1.11.1-4.el6.noarch cmake-2.8.12.2-4.el6.x86_64 如果没有安装make工具 yum -y install gcc automake autoconf libtool make 查看是否安装zlib库 rpm -qa|grep zlib zlib-1.2.3-29.el6.x86_64 zlib-devel-1.2.3-29.el6.x86_64 安装zlib yum install zlib-devel 检查是否安装ssl 库 [root@mysql5 binlog2sql-master]# rpm -qa|grep openssl openssl-1.0.1e-42.el6.x86_64 openssl-devel-1.0.1e-42.el6.x86_64 安装openssl yum install openssl* 安装bzip2依赖库 yum install -y bzip2* 2. 编译安装python2.7.15 cp /soft/Python-2.7.15.tgz /usr/src/ ??cd /usr/src/ ??tar -zxvf Python-2.7.15.tgz vi /usr/src/Python-2.7.15/Modules/Setup.dist ?找到??? #SSL=/usr/local/ssl #_ssl _ssl.c #?????? -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl #?????? -L$(SSL)/lib -lssl -lcrypto ...... #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ?把注释去掉 ?编译 cd /usr/src/Python-2.7.15 ./configure --prefix=/usr/local/python2.7 make all make install make clean make distclean (一句一句粘贴) ? 建立python2.7 软链 mv /usr/bin/python /usr/bin/python.bak ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7 ln -s /usr/bin/python2.7 /usr/bin/python ?? 2、安装setup-toolschmod 775 setuptools-0.6c11-py2.7.egg sh setuptools-0.6c11-py2.7.egg ?? 3、安装依赖包(1)PyMySQL-0.8.0安装 tar -zxvf PyMySQL-0.8.0.tar.gz cd PyMySQL-0.8.0 python setup.py install ? (2)wheel-0.31.0安装 tar -xzvf wheel-0.31.0.tar.gz cd wheel-0.31.0 python setup.py install ?(3)python-mysql-replication安装 unzip python-mysql-replication-master.zip cd python-mysql-replication-master python setup.py install ? (4)通过pip安装相应的依赖包 tar -xzvf pip-10.0.1.tar.gz cd pip-10.0.1 python setup.py install ? 解压binlog2sql软件: unzip binlog2sql-master.zip cd /soft/binlog2sql-master pip install -r requirements.txt(前面包都安装成功后,这句就可以不用了) ? 2、恢复演练1、查看参数使用cd /soft/binlog2sql-master/binlog2sql/ python binlog2sql.py --help ? 值得注意的就是--start-datetime,--stop-datetime格式为datetime即%Y-%m-%d %H:%M:%S。 2、闪回要求1、mysql 服务是开启,离线无法进行binlog。 2、binlog_format 必须是ROW格式。 3、DDL语句无法做到闪回,只能解析DML语句。 3、DML语句闪回测试删除test库下a1表的前2000行(共10000行) ? delete from a1 limit 2000;(drop table 是不能够闪回的) select count(*) from a1; ? a)???? test库创建闪回用户 grant select,replication slave,replication client on *.* to 'flash'@'%' identified by 'flash'; ? 查看当前binlog ? 当前binlog文件是mysql-binlog.000008,预估一下刚刚操作时间(由于测试机上时间不准,未带时间)。 cd /soft/binlog2sql-master/binlog2sql/ python binlog2sql.py -h127.0.0.1 -P3307 -uflash -pflash -dtest -ta1 --start-file='mysql-binlog.000008' 查看生成的恢复语句。 已下仅为一部分 ? 可以看得SQL位置是在259到10446之间,进行过滤,生成回滚SQL。 python binlog2sql.py -h127.0.0.1 -P3307 -uflash -pflash -dtest -ta1 --start-file='mysql-binlog.000008' --start-position=259 --stop-position=10446 -B >> flashback.sql ? 最后应用回滚SQL语句: source /soft/binlog2sql-master/binlog2sql/flashback.sql ? 测试成功! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |