MySQL工具推荐 | 基于MySQL binlog的flashback工具

1、前言

相信您应该遇到过因为误操作破坏数据库的问题,比如忘了带WHERE条件的UPDATE、DELETE操作,然后就需要进行传统方式的全量 & 增量恢复。现在,给您介绍一下MySQL中的flashback玩法,也可以做到像Oracle的flashback那样。

目前MySQL的 flashback(又称 闪回)一般是利用binlog完成的,能快速完成恢复且无需停机维护。

第一个实现该功能的是阿里云的 彭立勋,他在MySQL 5.5版本上就已实现,并将其开源及提交给MariaDB,为社区提供了非常优秀的参考模型。

2、闪回原理

本节我们先来介绍一下MySQL binlog flashback的基本工作原理。
MySQL的binlog以event的形式,记录了MySQL中所有的变更情况,利用binlog我们就能够重现所记录的所有操作。
MySQL引入binlog主要有两个用途/目的:一是为了主从复制;二是用于备份恢复后需要重新应用部分binlog,从而达到全备+增备的效果。

MySQL的binlog共有三种可选格式(binlog_format),其各有优缺点:
statement,基于SQL语句的模式,一般来说生成的binlog尺寸较小,但是某些不确定性SQL语句或函数在复制过程可能导致数据不一致甚至出错;
row,基于数据行的模式,记录的是数据行的完整变化。相对更安全,推荐使用(但通常生成的binlog会比其他两种模式大很多);
mixed,混合模式,可以根据情况自动选用statement抑或row模式;这个模式下也可能造成主从数据不一直。它属于MySQL 5.1版本时期的过渡方案。因此,如果你现在还使用mixed的话,那你的过渡时间也太久了......
备注:想要使用binlog flashback工具,需要将binlog_format设置为row才行。
3、工具推荐

项目一:mysqlbinlog_flashback
项目作者:赖亿@58到家
github项目地址:https://github.com/58daojia-dba/mysqlbinlog_flashback
也可在github.com上搜索“mysqlbinlog_flashback”
项目介绍:产生在线mysqlbinlog的回滚的sql,现在已经在阿里的rds上,db为utf8字符集的生产环境下使用。其他环境没有在生产环境下使用,请小心。
项目使用反馈:laiyi@daojia.com

项目二:binlog2sql
项目作者:曹单锋
github项目地址:https://github.com/danfengcao/binlog2sql
也可在github.com上搜索“binlog2sql”
项目介绍:从MySQL binlog解析出你要的SQL。根据不同选项,你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。
项目反馈:danfengcao.info@gmail.com

应用场景
flashback,数据快速回滚;
主从切换后数据不一致的修复;
从binlog生成标准SQL,再自行二次开发;

文章转自老叶茶馆公众号,原文链接:https://mp.weixin.qq.com/s/1Y6xLIwK9_Lx5eCiBBm9jQ

时间: 2024-10-31 16:35:57

MySQL工具推荐 | 基于MySQL binlog的flashback工具的相关文章

工具推荐:最好用的pCap工具

本文讲的是工具推荐:最好用的pCap工具,在计算机网络管理中,pcap(packet capture)由捕获网络流量的应用程序编程接口(API)组成.类Unix的系统主要是在libpcap库中实现pcap,而Windows系统则是使用名为WinPcap的libpcap端口. 监控软件可能会使用libpcap或WinPcap捕获通过网络传播的数据包,并在较新版本中链路层的网络上传输数据包,以及获取可能与libpcap或WinPcap一起使用的网络接口列表.pcap API是用C编写的,所以其他语言

针对十类数据从业人员,最好的工具推荐

文章讲的是针对十类数据从业人员,最好的工具推荐,学习新的数据工具可以提高你的价值和工资.但最好的选择其实取决于你现在熟悉的工具,不理解没关系,继续往下看,看有哪些工具可以加进你的工具包中. 数据专家是当今IT界的明星之一.这些专业人员可以执行从分析到工程,到编码的各种任务,并且经常被要求为整个企业具有战略意义的项目做贡献. 在数字化时代,数据量持续增长,对所有数据的洞察力已经成为成功的关键,而数据专家恰恰是这一切的核心. 数据专家的薪水也承认了这一点.行政招聘公司Burtch Works年度数据

阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元.ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析 基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) se

如何基于MySQL及Redis搭建统一的kv存储服务 | 秦波

一.MySQL+Redis常用部署方式 1.1  拓扑 1.2  特点 业务层通过双写同时写MySQL及Redis.读通常在Redis,若读取不到,则从MySQL读取,然后将数据同步到Redis,Redis通常设置expire或者默认LRU进行数据淘汰. 这种使用方式会有如下问题: 1)MySQL及Redis存在数据不一致风险,尤其是长时间运行的系统 2)业务层需要处理MySQL sql schema与Redis kv数据结构上的逻辑差异 3)无统一运维 4)无法方便扩容/缩容 二.KV化的存储

使用Erwin进行基于MySQL的数据库设计

ERwin是常用的进行数据库设计的工具,支持众多的数据库,可惜不支持MYSQL,大概是因为很少有企业用到MYSQL吧,但是MYSQL实际上还是很优秀的. 为了能够使用ERWIN能够进行基于MYSQL数据库的物理设计,可以采用以下方法步骤: (假定你已经有了一个设计好的LOGICAL MODEL) 1.安装MYSQL的ODBC DRIVER,可以去MYSQL.COM,有链接可以下载. 2.在ODBC的管理程序中建立一个连接你的MYSQL数据库的USER DSN. 3.从已建立好的LOGICAL M

MySQL · 源码分析 · MySQL BINLOG半同步复制数据安全性分析

半同步复制(semisynchronous replication)MySQL使用广泛的数据复制方案,相比于MySQL内置的异步复制它保证了数据的安 全,本文从主机在Server层提交事务开始一直到主机确认收到备机回复进行一步步解析,来看MySQL的半同步复制是怎么保证数 据安全的.本文基于MySQL 5.6源码,为了简化本文只分析DML的核心的事务处理过程,并假定事务只涉及innodb存储引擎. MySQL的事务提交流程 在MySQL中事务的提交Server层最后会调用函数ha_commit_

MySQL学习(二)图形界面管理工具Navicat for MySQL安装和使用

Navicat for MySQL是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习.Navicat for MySQL 基于Windows平台,为 MySQL 量身订作,提供类似于 MySQL 的用管理界面工具.此解决方案的出现,将解放 PHP.J2EE 等程序员以及数据库设计者.管理者的大脑,降低开发成本,为用户带来更高的开发效率. 工具原料: Navicat for MySQL 官方下载地址:http://www.navi

PHP基于MySQL数据库实现对象持久层的方法

 本文实例讲述了PHP基于MySQL数据库实现对象持久层的方法.分享给大家供大家参考.具体如下: 心血来潮,做了一下PHP的对象到数据库的简单持久层. 不常用PHP,对PHP也不熟,关于PHP反射的大部分内容都是现学的. 目前功能比较弱,只是完成一些简单的工作,对象之间的关系还没法映射,并且对象的成员只能支持string或者integer两种类型的. 成员变量的值也没有转义一下... 下面就贴一下代码: 首先是数据库的相关定义,该文件定义了数据库的连接属性: ? 1 2 3 4 5 6 7 8

使用mysqldump工具备份还原Mysql数据库

我们在网站数据维护中经常会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理: 1.使用into outfile 和 load data infile导入导出备份数据 这种方法的好处是,导出的数据可以自己规定格式,并且导出的是纯数据,不存在建表信息,你可以直接导入另外一个同数据库的不同表中,相对于mysqldump比较灵活机动. 我们来看下面的例子: (1)下面的mysql命令是把select的mytable表中的数据导出到/home/db_bak2012文件. select * f