文档结构:

在生产环境中如果遇到误删,改错数据的情况,利用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闪回操作的更多相关文章

  1. binlog2sql闪回工具的使用

    binlog2sql闪回工具的使用 一.下载安装依赖的python yum install openssl-devel bzip2-devel expat-devel gdbm-devel readl ...

  2. MySQL模拟Oralce闪回操作

    在前面的文章中我们介绍了MySQL误操作后数据恢复(update,delete忘加where条件),大概操作是通过sed命令把binlog中相关SQL误操作给逆向回来,然后导入SQL文件来恢复错误操作 ...

  3. PLSQL_闪回操作4_Flashback Drop

    2014-06-25 Created By BaoXinjian

  4. PLSQL_闪回操作1_Flashback Query

    2014-07-02 Created By BaoXinjian

  5. Oracle闪回操作

    Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select  to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...

  6. MySQL的binlog2sql闪回

    从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途=========== * 数据快速回滚(闪回)* 主从切换后新m ...

  7. binlog2sql闪回恢复数据

    用途: .数据快速回滚 .从binlog生成标准sql 使用限制: .必须设置binlog_format=ROW .binlog_row_image=full,该参数默认为FULL .恢复用户拥有的最 ...

  8. PLSQL_闪回操作6_Flashback Database

    2014-12-09 Created By BaoXinjian

  9. PLSQL_闪回操作5_Flashback Table

    2014-12-09 Created By BaoXinjian

随机推荐

  1. dubbo之服务分组

    当一个接口有多种实现时,可以用group区分. 服务 <dubbo:service group="feedback" interface="com.xxx.Inde ...

  2. CMMI评估流程

    原文链接:http://www.cmmcn.com/new/cmmi-105.html 当前位置:首页 >> CMMI知识库 >> CMMI相关 >> CMMI评估 ...

  3. CF319E Ping-Pong 线段树 + vector + 思维

    Code: #include<bits/stdc++.h> #define N 3000009 #define maxn 3000009 #define ll long long #def ...

  4. Node.js标准的回调函数

    Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果. function (err, data) 当正常读取时,err参数为null,data参数为读取到的String.当读取发生 ...

  5. Keras学习基础(2)

    目录: Keras的模块结构 数据预处理 模型 网络层 网络配置 Keras中的数据处理 文本预处理 序列预处理 图像预处理 Keras中的模型 Sequential顺序模型 Model模型[通用模型 ...

  6. AtCoder Grand Contest 021完整题解

    提示:如果公式挂了请多刷新几次,MathJex的公式渲染速度并不是那么理想. 总的来说,还是自己太弱了啊.只做了T1,还WA了两发.今天还有一场CodeForces,晚上0点qwq... 题解还是要好 ...

  7. 目录-Linux

    Linux文件系统: Linux: glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关:操作引导启动过程当中自动启动 ...

  8. WPF通过鼠标滑轮缩放显示图片

    如果你使用WinForm比较难实现通过滚动鼠标滑轮来对图片进行缩放显示,那么,你应该考虑一下使用WPF,既然是下一代Windows客户端开发平台,明显是有一定优势的,不然,MS是吃饱了撑着.   首先 ...

  9. Golang - 开篇必须吹牛逼

    目录 Golang - 开篇必须吹牛逼 Go牛逼吗 安装环境 Golang - 开篇必须吹牛逼 (1)我们为什么要学 高并发 深度 || 广度 (2)go学习思路和目标 多打多练 掌握go语言 做一个 ...

  10. Navicat Premium 下载地址

    Navicat Premium(32 bit)简体中文版:http://xiazai.formysql.com/trial/navicat_premium_trial.exe Navicat Prem ...