MYSQL工具之binlog2sql闪回操作
文档结构:

在生产环境中如果遇到误删,改错数据的情况,利用mysql闪回工具binlog2sql,可以实现数据的快速回滚,从binlog中提取SQL,并能生成回滚SQL语句。Binlog以event作为单位记录数据库变更的数据信息,闪回就是可以重现这些变化数据信息之前的操作。也就是说,对于insert操作,会生成相反的update语句。这块工具只能使用在binlog格式为row模式下,且只支持DML语句不支持DDL语句。
binlog2sql下载地址:https://github.com/danfengcao/binlog2sql
依赖包链接:
https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密码:gnz8
setup-tools下载地址:
https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
python2.7下载地址:https://www.python.org/downloads/
实验环境:
数据库版本:
mysql5.7.20
操作系统:red-hat 6.7
python:2.7.15
1、环境准备
1、安装python2.7
1.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-tools
chmod 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


测试成功!
MYSQL工具之binlog2sql闪回操作的更多相关文章
- binlog2sql闪回工具的使用
binlog2sql闪回工具的使用 一.下载安装依赖的python yum install openssl-devel bzip2-devel expat-devel gdbm-devel readl ...
- MySQL模拟Oralce闪回操作
在前面的文章中我们介绍了MySQL误操作后数据恢复(update,delete忘加where条件),大概操作是通过sed命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作 ...
- PLSQL_闪回操作4_Flashback Drop
2014-06-25 Created By BaoXinjian
- PLSQL_闪回操作1_Flashback Query
2014-07-02 Created By BaoXinjian
- Oracle闪回操作
Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...
- MySQL的binlog2sql闪回
从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途=========== * 数据快速回滚(闪回)* 主从切换后新m ...
- binlog2sql闪回恢复数据
用途: .数据快速回滚 .从binlog生成标准sql 使用限制: .必须设置binlog_format=ROW .binlog_row_image=full,该参数默认为FULL .恢复用户拥有的最 ...
- PLSQL_闪回操作6_Flashback Database
2014-12-09 Created By BaoXinjian
- PLSQL_闪回操作5_Flashback Table
2014-12-09 Created By BaoXinjian
随机推荐
- JavaScript+CSS交互
当鼠标移动到小图片上时,小图片显示红色边框并在上面大图片显示相应大图片,效果如图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...
- EnforceLearning-主动强化学习
前言: 被动学习Agent由固定的策略决定其行为.主动学习Agent必须自己决定采取什么行动. 具体方法是: Agent将要学习一个包含所有行动结果概率的完整模型,而不仅仅是固定策略的模型: 接下来, ...
- windows 实时性
在硬件编程时,大部分非智能硬件并没有主动通知反馈功能,需要PC主动轮询状态寄存器去查询硬件状态.对于运动类控制器,查询的时机(间隔)在一定程度上影响着准确率与系统负载.即使不考虑系统负载,在1000H ...
- antd #upload
import React from 'react' import {Upload, Icon, message,Button } from 'antd' import './index.scss'; ...
- PAT_A1109#Group Photo
Source: PAT A1109 Group Photo (25 分) Description: Formation is very important when taking a group ph ...
- [ZJOI2016]小星星(容斥+dp)
洛谷链接:https://www.luogu.org/problemnew/show/P3349 题意相当于给一棵树重新赋予彼此不同的编号,要求树上相邻的两个节点在给定的另外一个无向图中也存在边相连. ...
- SQL第二节课
SQL练习题 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的 ...
- 数据结构总结(UPDATING......)
目标: 1.栈........√ 2.队列......√ 3.堆.........× 4.并查集...× 栈: #define MAXN 65536 struct stack{ int sz[MAXN ...
- Vue.js教程—1.介绍和安装
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架.Vue 只关注视图层, 采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定 ...
- HDU - 1243 - 反恐训练营
先上题目: 反恐训练营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...