作者:网易数据库团队

上篇介绍了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. Linux中介绍who命令实例
  2. 小阳买水果(前缀和,单调栈,思维)
  3. jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...
  4. 修改已存在用户的所属组(usermod用法)
  5. [转] 【领导必读】唐僧为什么可以领导孙悟空
  6. 性能测试的几个参数概念
  7. 面向对象要点(构造函数)
  8. Windows vpn 远程桌面 使用快捷键
  9. 【Windows取证篇】Windows镜像仿真绕过开机密码技巧
  10. 国家制图标准适用于手工制图和计算机制图,机械制图国家标准与计算机绘图
  11. 利用ADS 2019软件Designguide自动设计滤波器
  12. 感觉有点累,没力气!
  13. 使用python模块 将中文大写汉字转化成阿拉伯数字
  14. dreamweaver html模版,dreamweaver利用预设模板来快速的架构一个简易网站
  15. MMdetection2测试voc数据获取precision
  16. Mac电脑搭建wordpress教程
  17. 性能测试分析之应用程序减少TCP压力
  18. php配置使用pdo,解析php5配置使用pdo
  19. 数据挖掘期末复习速成大法 华南农业大学
  20. 校招Java后端开发面经专栏——序

热门文章

  1. HDU 1286 找新朋友 (欧拉函数)
  2. 数据分析写作——程序员的另外一种输出
  3. Linux系统分区及LVM使用(一)
  4. UITableView 编辑和删除行
  5. SWT学生成绩管理系统
  6. Windows Server 2008 故障转移群集简介
  7. linux安装tomcat后启动报错Cannot find ./catalina.sh的解决方法
  8. Chrome浏览器安装vue-devtools插件
  9. 201521123061 《Java程序设计》第六周学习总结
  10. PHP------继承、多态