• 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

     

    测试成功!

  • 相关阅读:
    World Wind Java开发之六——解析shape文件(转)
    World Wind Java开发之五——读取本地shp文件(转)
    laravel 存储base64格式图片
    谷歌分析(Google Analytics) 是什么
    laravel中图片的删除
    js插件---弹出层sweetalert2(总结)
    范仁义web前端介绍课程---5、webstorm的下载安装
    范仁义web前端介绍课程---4、html、css、js初体验
    范仁义web前端介绍课程---3、课程大纲(初步)
    范仁义web前端介绍课程---2、web前端是干嘛的
  • 原文地址:https://www.cnblogs.com/hmwh/p/9140416.html
Copyright © 2020-2023  润新知