zoukankan      html  css  js  c++  java
  • flashback

    Flashback在mysql5.6的应用

    工具简介

    针对row格式的binlog可以解析为回滚操作语句,如delete反向生成insert,update生成反向的update,insert反向生成delete;在线上误操作的时候我们可以快速的将数据恢复到修改前的状态。

    安装

    1、下载地址

    http://download.csdn.net/download/sinat_29461437/10126004

    创建新服务binlogflashback, 并修改权限

    mv /opt/mysqlbinlog20160408 /use/bin/binlogflashback

    chmod 755 /use/bin/binlogflashback

    参数说明

     -B, --flashback Flashback data to start_postition or start_datetime.

    COM_BINLOG_DUMP or COM_BINLOG_DUMP_GTID commands by

    setting the option to either BINLOG-DUMP-NON-GTIDS or BINLOG-DUMP-GTIDS, respectively.

    If --read-from-remote-master=BINLOG-DUMP-GTIDS is combined

    --start-datetime ##从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
    --stop-datetime ##到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。

    --start-position ##事务开始的position点

    --stop-position ##事务结束的position点

    使用范例

    1、数据准备

    在数据库中创建如下表

    Create Table: CREATE TABLE `tb1` (
    `id` int(11) DEFAULT NULL,
    `name` varchar(20) DEFAULT NULL
    ) ENGINE=InnoDB;

    执行增、删、改动作

    insert into tb1 values(1,'aaa'),(2,'aaa');

    delete from tb1 where id=2;

    update tb1 set name='bbb' where id=1;

     

    2、反转

    2.1、解析binlog

    根据时间点解析binlog

    binlogflashback -v --start-datetime='2017-4-24 14:14:00' --stop-datetime='2017-4-24 14:16:08' /data/mysqldata/mysql-bin.000001 > /tmp/tmp.sql

    确定目标语句是否存在该范围内,并记录对应的pos点(at 346)

    vim /tmp/tmp.sql

     

     

     

    2.2、反转

    binlogflashback -v -B --start-position=574 --stop-position=1109 /data/mysqldata/mysql-bin.000001 > /tmp/tmp.sql

     

    第三步

    确定好反转sql直接执行,也可以提取需要的sql单独执行。

    mysql -uqihang.li -p123 < /tmp/tmp.sql  

    执行前

     

    执行后

     

    -- ---------------------------------------------------------------华丽的分界线--------------------------flashback 5.7------------------------------------

    flashback 5.7 的文件我稍后会放个链接:

    http://download.csdn.net/download/sinat_29461437/10126016

    使用方法和上述一直 期间遇到一些问题,分享下

    binlogbackup -v /data/mysqldata/mysql-bin.000001

     [root@ser2-56 ~]#binlogbackup -v /data/mysqldata/mysql-bin.000001
    binlogflashback: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by binlogflashback)

    GLIBCXX_3.4.15是关于C系统基础运行库GLIBC

    我们着手解决GLIBCXX的问题,C++库,首先查看错误信息提示中的lib文件的信息。

    ll /usr/bin64/libstadc++.so.6

     [root@ser2-56 ~]# ll /usr/lib64/libstdc++.so.6
    lrwxrwxrwx 1 root root 19 11月 3 10:49 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13

    发现/usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.13也就是系统以前有一个6.0.13版本,确实比较旧了,那么我们有新版本么?

    我们现在本机找下

    find / -name libstdc++.so.6*

    发现我们有一个/usr/lib64/libstdc++.so.6.0.20的高版本文件(没有可以自行下载,

    http://download.csdn.net/detail/sinat_29461437/9826688

     [root@ser2-56 ~]# find / -name libstdc++.so.6*
    /usr/lib64/libstdc++.so.6
    /usr/lib64/libstdc++.so.6.0.13
    /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/impala/lib/libstdc++.so.6
    /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/impala/lib/libstdc++.so.6.0.20

    cp /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/impala/lib/libstdc++.so.6.0.20 /usr/lib64/

    ll /usr/lib64/libstdc++.so.6

    rm -rf /usr/lib64/libstdc++.so.6

    ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6

    打印 libstdc++.so.6的输出信息中限定(grep) GLIBC库的信息

    strings /usr/lib64/libstdc++.so.6 | grep GLIBC

     

    [root@ser2-56 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
    GLIBCXX_3.4
    GLIBCXX_3.4.1
    GLIBCXX_3.4.2
    GLIBCXX_3.4.3
    GLIBCXX_3.4.4
    GLIBCXX_3.4.5
    GLIBCXX_3.4.6
    GLIBCXX_3.4.7
    GLIBCXX_3.4.8
    GLIBCXX_3.4.9
    GLIBCXX_3.4.10
    GLIBCXX_3.4.11
    GLIBCXX_3.4.12
    GLIBCXX_3.4.13
    GLIBCXX_3.4.14
    GLIBCXX_3.4.15
    GLIBCXX_3.4.16
    GLIBCXX_3.4.17
    GLIBCXX_3.4.18
    GLIBCXX_3.4.19
    GLIBCXX_3.4.20
    GLIBC_2.3
    GLIBC_2.2.5
    GLIBC_2.3.2
    GLIBCXX_FORCE_NEW
    GLIBCXX_DEBUG_MESSAGE_LENGTH

    发现GLIBC的版本已经提高到3.4.20,这已经可以满足我们要求了

    binlogbackup -v /data/mysqldata/mysql-bin.000001

     就可以使用了

    限制

    binlog_format=row

    只支持insert、update、delete

    不支持drop 、truncate、alter等ddl语句

  • 相关阅读:
    请求失败或服务未及时响应。有关详细信息,请参见事件日志或其他适用的错误日志
    12篇学通C#网络编程——第一篇 基础之进程线程(转)
    关于XP和win7前置音频插孔无声音的解决办法
    进程,线程,主线程,异步
    SQL 在什么情况下使用全表扫描
    性能的一些设置
    清除Windows 7通知区域的旧图标
    操作office
    数据库索引
    SCSI
  • 原文地址:https://www.cnblogs.com/likappe/p/9504316.html
Copyright © 2011-2022 走看看