mysql dml原理_InnoSQL/MySQL DML Flashback功能简介
作者:网易数据库团队
上篇介绍了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功能简介相关推荐
- mysql优化零基础_MySQL8数据库 | MySQL调优|MySQL底层原理|MySQL零基础新手教程
MySQL8数据库安装 一.Windows 环境下安装 Select Operating System: Microsoft Windows B.解压并配置MySQL环境变量 MYSQL_HOME: ...
- mysql patindex_mssql 系统函数 字符串函数 patindex 功能简介
一.patindex 函数功能简介 patindex功能为 返回指定模式在表达式中第一次出现的位置,如果无法匹配出相关数据,则返回零 参数简介: 参数1: 模式匹配信息(类似 like的通配符) 通常 ...
- mysql auto_increment 原理_[Mysql]mysql原理之Auto_increment
2019独角兽企业重金招聘Python工程师标准>>> 引言 MySQL中auto_increment字段估计大家都经常用到,特别是innodb引擎.我也经常用,只知道mysql可以 ...
- php mysql 实现原理_php+mysql分页原理实现
完整代码如下: ! html head -="-type"=";=GBK" styletype="text/css" body{font-s ...
- 【MySQL】深入理解MySQL索引原理(MySQL专栏启动)
- MySQL主从复制原理、半同步操作步骤及原理
MySQL主从复制原理.半同步操作步骤及原理 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远程数据同步. 2.搭建ftp/h ...
- 五、MySQL主从复制原理
MySQL主从复制原理.半同步操作步骤及原理 标签(空格分隔): mysql 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远 ...
- 云原生数据仓库AnalyticDB Mysql(ADB分析型数据库)-DML语法之新增插入数据详解
云原生数据仓库AnalyticDB Mysql(ADB分析型数据库)-DML语法之新增插入数据 ADB分析型数据库,是阿里云平台上资源,原名叫云原生数据仓库AnalyticDB Mysql,俗称ADB ...
- mysql基础1 -------- DDL、DML、DQL、DCL
目录 前言 SQL概述 SQL的分类 DDL 数据库操作 表操作 查询创建表 数据类型 表操作 案例 修改表结构操作 删除表操作 DML 添加数据 修改数据 删除数据 DQL 基本语法 基本查询 条件 ...
最新文章
- Android Material各种颜色设置
- 如何在vue中使用剪裁图片插件cropperImage
- 夸克浏览器怎么安装脚本_iOS 第一浏览器发布安卓版,除了真香我还能说什么...
- 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
- 面向对象的JavaScript基本知识指南大全
- No New-Net
- linux学习笔记:Linux 文件的基本属性
- netty源码解解析(4.0)-15 Channel NIO实现:写数据
- 实习学习:项目用的DDD,什么是DDD开发?
- layui和js实现二级联动
- web前端-HTML 媒体插件 022
- 腾讯浏览器(X5WebView的使用)
- 初二计算机辅导记录,计算机一级OFFICE辅导:用Excel制作自动记录的考勤表
- ELASTIC-PHP + IK分词器 + THINKPHP6 初次使用 (关键词查询)
- python pytz下载_使用 pytz 处理 Python 中的时区问题
- 怎么授权接入芝麻小程序客服系统?
- C++实现windows平台下音频播放音量调节功能
- 格式化的硬盘能恢复吗 硬盘格式化以后能恢复吗
- 水溶性量子点CdSe/ZnS
- LaaS,PaaS,SaaS介绍