返回顶部
首页 > 资讯 > 数据库 >mysql闪回工具binlog2sql的安装使用过程是怎样的
  • 800
分享到

mysql闪回工具binlog2sql的安装使用过程是怎样的

2024-04-02 19:04:59 800人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关Mysql闪回工具binlog2sql的安装使用过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。软件包下载地址:链接:http

这期内容当中小编将会给大家带来有关Mysql闪回工具binlog2sql的安装使用过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

软件包下载地址:链接:https://pan.baidu.com/s/15dDeGufVWOgVrfATGWBzaA 密码:gnz8

DBA或开发人员,有时会误删或者误更新数据,如果是线上环境会影响较大,这就需要能快速回滚;而mysql闪回(flashback)利用binlog能直接进行回滚,并且能快速恢复数据(MySQL闪回现在只支持DML语句进行闪回)。

利用binlog闪回需要的条件:

Mysql参数设置:

log_bin = /目录/mysql-bin.log(开启)

binlog_fORMat = row

binlog_row_image = full(默认是full)

工作原理主要是对于delete操作,从binlog取出delete信息,生成insert的回滚语句。对于insert操作,回滚SQL是delete。对于update操作,回滚sql应该交换SET和WHERE的值。

安装:

环境准备安装各种依赖的工具包列表

python换成python3.6版本 (Python版本升级参考博客:Https://blog.csdn.net/wwwdaan5com/article/details/78218277)

python-pip ,

PyMySQL ,

python-mysql-replication,

wheel argparse

1、binlog2sql下载

https://GitHub.com/danfenGCao/binlog2sql

2、binlog2sql依赖包安装

(1)PyMySQL-0.8.0安装

https://pypi.python.org/pypi/PyMySQL/

[root@node1 binlogsql]# tar -xzvf PyMySQL-0.8.0.tar.gz 

[root@node1 binlogsql]# cd PyMySQL-0.8.0

[root@node1 PyMySQL-0.8.0]# python setup.py install

(2)wheel-0.31.0安装

https://pypi.python.org/pypi/wheel/

[root@node1 binlogsql]# tar -xzvf wheel-0.31.0.tar.gz 

[root@node1 binlogsql]# cd wheel-0.31.0

[root@node1 wheel-0.31.0]# python setup.py install

(3)python-mysql-replication安装

https://github.com/noplay/python-mysql-replication

[root@node1 binlogsql]# unzip python-mysql-replication-master.zip 

[root@node1 binlogsql]# cd python-mysql-replication-master

[root@node1 python-mysql-replication-master]# python setup.py  install

(4)可以通过pip安装相应的依赖包

https://pypi.python.org/pypi/pip

[root@node1 tools]# tar -xzvf pip-10.0.1.tar.gz 

[root@node1 tools]# cd pip-10.0.1

[root@node1 pip-10.0.1]# python setup.py install

[root@node1 binlog2sql-master]# pip install  -r requirements.txt 

可能会出错误。

FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.6/site-packages/mysql_replication-0.18-py3.6.egg'

依赖包版本问题。

执行。。pip install mysql-replication

再执行 pip install  -r requirements.txt

mysql闪回工具binlog2sql的安装使用过程是怎样的

显示都已安装完成。

实战演练:

1.查看测试数据:

MariaDB [test]> select * from t;

+----+--------------+

| id | name         |

+----+--------------+

|  1 | ga           |

| 31 | ga           |

| 38 | ga           |

| 45 | ga           |

| 52 | hg           |

| 59 | hh           |

| 61 | 规划如果     |

| 68 | 干点啥       |

| 73 | ww           |

| 80 | ww           |

| 87 | gg           |

| 94 | gg           |

+----+--------------+

12 rows in set (0.00 sec)

2.删除部分数据:

MariaDB [test]> delete from t where id > 50;

Query OK, 8 rows affected (0.18 sec)

MariaDB [test]> select * from t;

+----+------+

| id | name |

+----+------+

|  1 | ga   |

| 31 | ga   |

| 38 | ga   |

| 45 | ga   |

+----+------+

4 rows in set (0.00 sec)

删了8条记录。

3.查看master的日志位置。

MariaDB [test]> show master status;

+------------------+-----------+--------------+------------------+

| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+-----------+--------------+------------------+

| mysql-bin.000029 | 468829331 |              |                  |

+------------------+-----------+--------------+------------------+

1 row in set (0.01 sec)

4.根据误操作的大概时间找出相应的误操作语句

[root@localhost binlog2sql]# python binlog2sql.py -h272.168.1.201 -P3306 -uroot -p123456 -dtest -tt --start-file='mysql-bin.000029' --start-datetime='2018-05-10 11:00:00' --stop-datetime='2018-05-10 11:10:00' > a.sql

[root@localhost binlog2sql]# cat a.sql

DELETE FROM `test`.`t` WHERE `id`=52 AND `name`='hg' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=59 AND `name`='hh' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=61 AND `name`='规划如果' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=68 AND `name`='干点啥' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=73 AND `name`='ww' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=80 AND `name`='ww' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=87 AND `name`='gg' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

DELETE FROM `test`.`t` WHERE `id`=94 AND `name`='gg' LIMIT 1; #start 468829113 end 468829304 time 2018-05-10 11:06:52

从a.sql中可以查到这个事物在binlog中的start和end(binlog2sql对于同一个事务会输出同样的start position)

5.根据上一步中的位置点生成相应的insert恢复语句

使用 -B 选项生成回滚sql,检查回滚sql是否正确。(注:真实场景下,生成的回滚SQL经常会需要进一步筛选,查看里面是否有别的表的dml语句以及本表的非delete操作的语句,结合grep、编辑器等)

[root@localhost binlog2sql]# python binlog2sql.py -h272.168.1.201 -P3306 -uroot -p123456 -dtest -tt --start-file='mysql-bin.000029' --start-position=468829113 --stop-position=468829304 -B > b.sql

[root@localhost binlog2sql]# cat b.sql

INSERT INTO `test`.`t`(`id`, `name`) VALUES (94, 'gg'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (87, 'gg'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (80, 'ww'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (73, 'ww'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (68, '干点啥'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (61, '规划如果'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (59, 'hh'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

INSERT INTO `test`.`t`(`id`, `name`) VALUES (52, 'hg'); #start 468829113 end 468829304 time 2018-05-10 11:06:52

和删除语句进行对比  刚好8条。

6、与开发确认回滚sql没问题后,执行回滚语句并确认回滚成功。

MariaDB [test]> source /home/binlog2sql-master/binlog2sql/b.sql

Query OK, 1 row affected (0.06 sec)

Query OK, 1 row affected (0.06 sec)

Query OK, 1 row affected (0.09 sec)

Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.05 sec)

Query OK, 1 row affected (0.05 sec)

MariaDB [test]> select * from t;

+----+--------------+

| id | name         |

+----+--------------+

|  1 | ga           |

| 31 | ga           |

| 38 | ga           |

| 45 | ga           |

| 52 | hg           |

| 59 | hh           |

| 61 | 规划如果     |

| 68 | 干点啥       |

| 73 | ww           |

| 80 | ww           |

| 87 | gg           |

| 94 | gg           |

+----+--------------+

12 rows in set (0.00 sec)

7。

(1)闪回的关键是快速筛选出真正需要回滚的SQL。

(2)先根据库、表、时间做一次过滤,再根据位置做更准确的过滤。

(3)由于数据一直在写入,要确保回滚sql中不包含其他数据。可根据是否是同一事务、误操作行数、字段值的特征等等来帮助判断。

(4)执行回滚sql时如有报错,需要查实具体原因,一般是因为对应的数据已发生变化。由于是严格的行模式,只要有唯一键(包括主键)存在,就只会报某条数据不存在的错,不必担心会更新不该操作的数据。

(5)如果待回滚的表与其他表有关联,要与开发说明回滚和不回滚各自的副作用,再确定方案。

(6)最重要的两点:筛选出正确SQL!与开发沟通清楚!

上述就是小编为大家分享的mysql闪回工具binlog2sql的安装使用过程是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mysql闪回工具binlog2sql的安装使用过程是怎样的

本文链接: https://lsjlt.com/news/61315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql闪回工具binlog2sql的安装使用过程是怎样的
    这期内容当中小编将会给大家带来有关mysql闪回工具binlog2sql的安装使用过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。软件包下载地址:链接:http...
    99+
    2024-04-02
  • 如何安装配置mysql闪回工具binlog2sql
    这篇文章主要讲解了如何安装配置mysql闪回工具binlog2sql,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。概述binlog2sql是一个Python开发开源的MySQL...
    99+
    2024-04-02
  • mysql闪回工具binlog2sql安装配置教程详解
    概述 binlog2sql是一个Python开发开源的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,去除主键的INSERT SQL,是DBA和运维人员...
    99+
    2022-05-20
    mysql闪回工具binlog2sql mysql闪回工具 mysql binlog2sql
  • Mysql安装过程是怎样的
    这篇文章给大家介绍Mysql安装过程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。环境说明:操作系统:Red Hat Linux 6安装Mysql5.7版...
    99+
    2024-04-02
  • Python软件管理工具pip的安装过程是怎样的
    这期内容当中小编将会给大家带来有关Python软件管理工具pip的安装过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  ...
    99+
    2024-04-02
  • linux下安装mysql的过程是怎么样的
    这篇文章给大家介绍linux下安装mysql的过程是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一 安装前准备检查是否已经安装过mysql,执行命令[root@localhost /]# ...
    99+
    2023-06-28
  • Linux系统中的Mysql安装过程是怎样的
    这期内容当中小编将会给大家带来有关Linux系统中的Mysql安装过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Mysql是 Oracle 旗下得一款产品,属于关系型数据库,在 WE...
    99+
    2023-06-28
  • Centos6.6安装过程是怎么样的
    这篇文章将为大家详细讲解有关Centos6.6安装过程是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、选择install or update an existing system...
    99+
    2023-06-06
  • mysql存储过程具体是怎么样的
    本文主要给大家简单讲讲mysql存储过程具体是怎么样的,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql存储过程具体是怎么样的这篇文章可以给大家带来一...
    99+
    2024-04-02
  • Linux oracle 9i安装过程是怎样的
    这期内容当中小编将会给大家带来有关Linux oracle 9i安装过程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  下面进行Oracle安装前期准备中的第一点,完成Linux的安装.在安装中...
    99+
    2023-06-10
  • win7下CentOS安装过程是怎样的
    本篇文章为大家展示了win7下CentOS安装过程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。win7下CentOS安装步骤:1。安装win7.1)分区方案.  &nb...
    99+
    2023-06-16
  • Linux安装rabbitmq过程是怎么样的
    这篇文章将为大家详细讲解有关Linux安装rabbitmq过程是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。最近安装了一次rabbitmq服务,也遇到了一些问题,特此做一下记录。一...
    99+
    2023-06-05
  • Navicat for MySQL工具安装的教程
    下面讲讲关于Navicat for MySQL工具安装的教程,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完Navicat for MySQL工具安装的教程这篇文章你一定会有所受...
    99+
    2024-04-02
  • SpringBoot配置热加载工具devtools的过程是怎样的
    SpringBoot配置热加载工具devtools的过程是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、devtools原理介绍spring-boot-devto...
    99+
    2023-06-15
  • Mac OS下用Homebrew安装开源工具的过程
    这篇文章主要介绍“Mac OS下用Homebrew安装开源工具的过程”,在日常操作中,相信很多人在Mac OS下用Homebrew安装开源工具的过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mac OS下...
    99+
    2023-06-04
  • CentOS系统安装crontab过程是怎样的
    这篇文章将为大家详细讲解有关CentOS系统安装crontab过程是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。crontab命令常见于Unix和类Unix的操作系统之中,用于设置周...
    99+
    2023-06-16
  • HttpClient 4.0封装工具类是怎样的
    这篇文章将为大家详细讲解有关HttpClient 4.0封装工具类是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。以下为本人在实际开发过程中封装的HttpClient工具类,HttpC...
    99+
    2023-06-03
  • Linux运维工具Supervisor的安装使用(进程管理工具)
    一、介绍 Supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。目前Supervisor可以运行在大多数Unix系统上,但不...
    99+
    2022-06-04
    Linux运维工具Supervisor Linux Supervisor
  • Metasploit profiling工具的使用过程
    Metasploit profiling工具的使用过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Metasploit profiling工具Metasploi...
    99+
    2023-06-05
  • BBED工具的安装使用(一)
    BBED是用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。要想使用该工具,需用户自己安装,在Oracle&n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作