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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
关系型数据库 MySQL
mysql监测工具tuning-primer.sh
mysql监测工具tuning-primer.sh
13 0
|
27天前
|
关系型数据库 MySQL 数据库
Navica工具把远程MySQL导入到本地MySQL数据库
Navica工具把远程MySQL导入到本地MySQL数据库
|
2月前
|
关系型数据库 MySQL Java
数据库迁移工具Kettle连接Mysql数据库报错:Driver class ‘org.gjt.mm.mysql.Dr...解决
数据库迁移工具Kettle连接Mysql数据库报错:Driver class ‘org.gjt.mm.mysql.Dr...解决
|
2月前
|
网络协议 关系型数据库 MySQL
【Linux环境】Centos7.x 安装MySQL,使用Navicat等远程连接工具报2003-Can‘t connect to MySQL server on(10060 Unknown err)
【Linux环境】Centos7.x 安装MySQL,使用Navicat等远程连接工具报2003-Can‘t connect to MySQL server on(10060 Unknown err)
71 0
|
5月前
|
关系型数据库 MySQL Windows
Windows端 五款 MySQL 客户端工具
Windows端 五款 MySQL 客户端工具
696 0
|
5月前
|
监控 负载均衡 关系型数据库
PT 工具解决 Mysql 主从复制一致性问题
在搭建主从的时候,默认是一个异步的过程,所以难免出现数据延迟。 虽然用同步复制(参考下文链接),可以解决数据延迟问题,但是牺牲了一些性能,并不利于生产环境的需求。
152 0
PT 工具解决 Mysql 主从复制一致性问题
|
5月前
|
SQL 存储 Oracle
MySQL数据库界面化工具 - Navicat的常用功能
MySQL数据库界面化工具 - Navicat的常用功能
129 0
|
6月前
|
SQL 关系型数据库 MySQL
15天学习MySQL计划-MySQL工具(进阶篇)-第十一天
15天学习MySQL计划-MySQL工具(进阶篇)-第十一天
69 0
|
7月前
|
SQL 监控 关系型数据库
MySQL企业版工具——使用MySQL Enterprise Monitor监控MySQL数据库和主机---发表到爱可生开源社区
MySQL在企业版里的有个工具MySQL Enterprise Monitor,可以用于监控MySQL实例和主机性能。现实验如下
707 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL - 使用trace工具来窥探MySQL是如何选择执行计划的
MySQL - 使用trace工具来窥探MySQL是如何选择执行计划的
89 0
推荐文章
更多