作者:网易数据库团队

上篇介绍了DDL闪回,本篇继续介绍DML闪回,相信大家已经比较熟悉。为了使用起来更加方便,我们结合RDS使用需求进一步更加了一些参数。

DML fashback原理

目前DML flashback功能集成于官方mysqlbinlog命令,通过参数的方式进行flashback功能的开启。

官方mysqlbinlog命令为解析MySQL的二进制日志。当二进制日志的格式为ROW格式时,可以输出每个操作的每条记录的前项与后项。那么通过逆操作即可进行回滚操作,例如:原始操作:INSERT INTO ... Flashback操作:DELETE ...

原始操作:DELETE FROM ...Flashback操作:INSERT INTO ...

原始操作:UPDATE XXX SET OLD_VALUES ...Flashback操作:UPDATE XXX SET NEW_VALUES ...

DML的flashback相关参数说明

目前支持的参数如下:

-B,--flashback

解析Binlog生成flashback语句进行回滚。

例1: 闪回update操作。

create table t1(a int);

insert into t1 values(1);

flush logs;

update t1 set a = 2;

mysql> show binlog events in "mysql-bin.000003";

找出event起止位置191,459。

mysqlbinlog -B --start-position=191 --stop-position=459 mysql-bin.000003 > fb.sql

-A,--skip-database

解析BinLog时过滤掉该数据库。见例2。

-a,--skip-table

解析BinLog时过滤掉该表,一般与skip-datebase配套使用。

例2:--skip-database和--skip-table进行库和表的过滤。

create database test1;

create database test2;

create table test1.t1(a int);

create table test2.t2(a int);

create table test2.t3(b int);

flush logs;

insert into test1.t1 values(1);

insert into test2.t2 value (2);

insert into test2.t3 value (3);

mysql> show binlog events in "mysql-bin.000003";

找出event起止位置191,935。

mysqlbinlog -B --skip-database=test2 --skip-table=t2 --start-position=191 --stop-position=935 mysql-bin.000003 > fb.sql

test2.t2表被过滤掉了,没有被回滚。

-O,--split-size-interval

将BinLog文件按照指定的大小拆分为多个段,解析结果为打印每个段的起始offset位置。

注意,当进行flashback时,flashback的内容先保存在内存中。若你的binlog大小为10G,那么需要额外的10G内存先暂时保存这部分信息。在某些情况下,如云环境、或服务器内存较小,会导致无法输出flashback的日志。这时可以通过此参数来设置内存保存文件的大小,例如将此值设置为100M,那么会将Binlog文件按照100M切分为多个段,然后分段进行回滚。

例3:按照指定split-size-interval大小512B和1024B分别切分如下Binlog。

mysqlbinlog --split-size-interval=512 mysql-bin.000016 | grep @start

mysqlbinlog --split-size-interval=1024 mysql-bin.000016 | grep @start

-C,--datetime-to-pos

基于输入的时间信息,解析出该时间对应的第一个BinLog event偏移位置,格式参照start-datetime,flashback时要先找到起始的偏移量,DBA可以先通过此参数定位到具体位置,然后再进行flashback操作。

例4:如下Binlog,解析2019-02-21 14:03:45时间对应的位置。

mysqlbinlog --datetime-to-pos=”2019-02-21 14:03:45” mysql-bin.000016 | grep @datetime_to_pos

-T,--table

仅解析该表,一般与database配套使用。见例5。

-E,--fb-event

仅解析该类型的Log event,一般与database、table选项配套使用。可选的值有:DELETE

INSERT

UPDATE

例5:--database、--table和--fb-event回滚delete。

create database test;

use test;

create table t1(a int);

flush logs;

insert into t1 values(1);

update t1 set a = 2;

insert into t1 values(3);

delete from t1 where a = 3;

mysql> show binlog events in "mysql-bin.000003";

找出event起止位置191,1218。

mysqlbinlog -B --database=test --table=t1 --fb-event delete --start-position=191 --stop-position=1218 mysql-bin.000003 > fb.sql

mysql dml原理_InnoSQL/MySQL DML Flashback功能简介相关推荐

  1. mysql优化零基础_MySQL8数据库 | MySQL调优|MySQL底层原理|MySQL零基础新手教程

    MySQL8数据库安装 一.Windows 环境下安装 Select Operating System: Microsoft Windows B.解压并配置MySQL环境变量 MYSQL_HOME: ...

  2. mysql patindex_mssql 系统函数 字符串函数 patindex 功能简介

    一.patindex 函数功能简介 patindex功能为 返回指定模式在表达式中第一次出现的位置,如果无法匹配出相关数据,则返回零 参数简介: 参数1: 模式匹配信息(类似 like的通配符) 通常 ...

  3. mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment

    2019独角兽企业重金招聘Python工程师标准>>> 引言 MySQL中auto_increment字段估计大家都经常用到,特别是innodb引擎.我也经常用,只知道mysql可以 ...

  4. php mysql 实现原理_php+mysql分页原理实现

    完整代码如下: ! html head -="-type"=";=GBK" styletype="text/css" body{font-s ...

  5. 【MySQL】深入理解MySQL索引原理(MySQL专栏启动)

  6. MySQL主从复制原理、半同步操作步骤及原理

    MySQL主从复制原理.半同步操作步骤及原理 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远程数据同步. 2.搭建ftp/h ...

  7. 五、MySQL主从复制原理

    MySQL主从复制原理.半同步操作步骤及原理 标签(空格分隔): mysql 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远 ...

  8. 云原生数据仓库AnalyticDB Mysql(ADB分析型数据库)-DML语法之新增插入数据详解

    云原生数据仓库AnalyticDB Mysql(ADB分析型数据库)-DML语法之新增插入数据 ADB分析型数据库,是阿里云平台上资源,原名叫云原生数据仓库AnalyticDB Mysql,俗称ADB ...

  9. mysql基础1 -------- DDL、DML、DQL、DCL

    目录 前言 SQL概述 SQL的分类 DDL 数据库操作 表操作 查询创建表 数据类型 表操作 案例 修改表结构操作 删除表操作 DML 添加数据 修改数据 删除数据 DQL 基本语法 基本查询 条件 ...

最新文章

  1. Android Material各种颜色设置
  2. 如何在vue中使用剪裁图片插件cropperImage
  3. 夸克浏览器怎么安装脚本_iOS 第一浏览器发布安卓版,除了真香我还能说什么...
  4. 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
  5. 面向对象的JavaScript基本知识指南大全
  6. No New-Net
  7. linux学习笔记:Linux 文件的基本属性
  8. netty源码解解析(4.0)-15 Channel NIO实现:写数据
  9. 实习学习:项目用的DDD,什么是DDD开发?
  10. layui和js实现二级联动
  11. web前端-HTML 媒体插件 022
  12. 腾讯浏览器(X5WebView的使用)
  13. 初二计算机辅导记录,计算机一级OFFICE辅导:用Excel制作自动记录的考勤表
  14. ELASTIC-PHP + IK分词器 + THINKPHP6 初次使用 (关键词查询)
  15. python pytz下载_使用 pytz 处理 Python 中的时区问题
  16. 怎么授权接入芝麻小程序客服系统?
  17. C++实现windows平台下音频播放音量调节功能
  18. 格式化的硬盘能恢复吗 硬盘格式化以后能恢复吗
  19. 水溶性量子点CdSe/ZnS
  20. LaaS,PaaS,SaaS介绍

热门文章

  1. hadoop安装小记
  2. Url有值怎么使用get传值
  3. 最后的配置部分:LNMP+Tomcat
  4. spring cloud 资源
  5. Redis 的持久化
  6. cocos2d-x3.0中数据类型vector,map、value
  7. 编译 linux 0.01
  8. 使用Eclipse调试Android Native Application---cocos2d-x + Eclipse + Android + ndk
  9. CSliderCtrl鼠标点击精确定位
  10. python学习之旅(入门)