详情页标题前

阿里云RDS数据库Native Flashback-云淘科技

详情页1

Native Flashback功能可以通过SQL语句查询或恢复指定时间点的数据,保证在误操作后可以快速获取历史数据。

功能说明

数据库运维过程中的误操作可能会给业务带来严重的影响,常见的恢复手段Binlog Flashback操作较为复杂、容易出错且耗时较长,而通过备份集恢复则需要额外的系统资源,在数据量较大时恢复时间不可控。

AliSQL在InnoDB引擎上设计和实现了Native Flashback功能,无需复杂的恢复操作,通过简单的SQL语句即可查询或恢复误操作前的历史数据,节省了大量宝贵的时间,保证业务平稳运行。

前提条件

  • 实例为RDS MySQL 8.0基础系列或高可用系列。

  • 内核小版本为20210930及以上。如何查看或升级内核小版本,请参见升级内核小版本。

注意事项

  • 仅支持使用InnoDB引擎的表。

  • 需要消耗额外的undo表空间,可以通过INNODB_UNDO_SPACE_SUPREMUM_SIZE参数进行配置。

  • Native Flashback的查询结果取最接近指定时间点的数据,不保证查询到的数据与指定时间点的数据完全匹配。

  • 暂不支持跨DDL操作的历史版本数据查询和恢复。例如您无法通过Native Flashback查询某个已经被删除的表的内容。

语法

Native Flashback提供了全新的AS OF语法,通过该语法指定需要回滚的时间。语法规则如下:

SELECT ... FROM 
  AS OF TIMESTAMP ;

其中,在表达式中指定回滚的时间,该表达式支持多种形式,示例:

SELECT ... FROM tablename
  AS OF TIMESTAMP '2020-11-11 00:00:00';

SELECT ... FROM tablename
  AS OF TIMESTAMP now();

SELECT ... FROM tablename
  AS OF TIMESTAMP (SELECT now());

SELECT ... FROM tablename
  AS OF TIMESTAMP DATE_SUB(now(), INTERVAL 1 minute);

参数说明

Native Flashback功能开放了如下可配置参数:

参数名称

说明

INNODB_RDS_FLASHBACK_TASK_ENABLED

  • 描述:Native Flashback的功能开关。

  • 命令行格式:--innodb-rds-flashback-task-enabled=#

  • 参数范围:全局参数。

  • 数据类型:Boolean。

  • 默认值:OFF。

  • 取值范围:[ON|OFF]。

说明

关闭Native Flashback功能时,需要同步将INNODB_UNDO_RETENTION参数设置为0。

INNODB_UNDO_RETENTION

  • 描述:undo记录的保留时长,超出该时长的undo记录无法查询,单位:秒。

  • 命令行格式:--innodb-undo-retention=#

  • 参数范围:全局参数。

  • 数据类型:Integer。

  • 默认值:0。

  • 取值范围:0~4294967295。

说明

  • 该参数的值越大,Native Flashback支持的回档查询时间越长,同时undo表空间占用的存储空间也会上升。

  • INNODB_RDS_FLASHBACK_TASK_ENABLED参数设置为OFF时,需同步将本参数设置为0。

INNODB_UNDO_SPACE_SUPREMUM_SIZE

  • 描述:undo表空间可占用的最大磁盘空间,单位:MB。占用空间超过这个值时,忽略INNODB_UNDO_RETENTION参数强制清理undo记录。

  • 命令行格式:--innodb-undo-space-supremum-size=#

  • 参数范围:全局参数。

  • 数据类型:Integer。

  • 默认值:10240。

  • 取值范围:0~4294967295。

INNODB_UNDO_SPACE_RESERVED_SIZE

  • 描述:预留的undo表空间大小,单位:MB。在INNODB_UNDO_RETENTION参数非0的情况下,将使用这部分空间尽可能多地保留undo记录。

  • 命令行格式:--innodb-undo-space-reserved-size=#

  • 参数范围:全局参数。

  • 数据类型:Integer。

  • 默认值:0。

  • 取值范围:0~4294967295。

说明

该参数的值太大可能导致undo历史记录过多,影响实例性能。如非必要,请保持该参数为0。

使用示例

# 获取时间点
MySQL [mytest]> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-10-14 15:44:09 |
+---------------------+
1 row in set (0.00 sec)

# 查看数据
MySQL [mytest]> select * from mt1;
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec)

# 不带WHERE条件的更新操作
MySQL [mytest]> update mt1 set c1 = 100;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0

MySQL [mytest]> select * from mt1;
+----+------+
| id | c1   |
+----+------+
|  1 |  100 |
|  2 |  100 |
|  3 |  100 |
|  4 |  100 |
|  5 |  100 |
+----+------+
5 rows in set (0.00 sec)

# 查询历史时间点的数据,成功返回结果
MySQL [mytest]> select * from mt1 AS OF timestamp '2020-10-14 15:44:09';
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec)

# 如果超出保留的历史数据范围,返回失败
MySQL [mytest]> select * from mt1 AS OF timestamp '2020-10-13 14:44:09';
ERROR 7545 (HY000): The snapshot to find is out of range

# 开始恢复数据
MySQL [mytest]> create table mt1_tmp like mt1; # 创建一个与原表结构相同的临时表
Query OK, 0 rows affected (0.03 sec)  
MySQL [mytest]> insert into mt1_tmp
             -> select * from mt1 AS OF
             -> TIMESTAMP '2020-10-14 15:44:09'; # 将原表中的历史数据写入临时表 
Query OK, 5 rows affected (0.01 sec) 
Records: 5  Duplicates: 0  Warnings: 0 
MySQL [mytest]> select * from mt1_tmp; # 确认临时表中的数据是否正确 
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec) 
MySQL [mytest]> rename table mt1 to mt1_bak,
             -> mt1_tmp to mt1; #(进行本操作需要先停止业务读写)更改原表表名为mt1_bak,并将临时表名改成原表表名,完成数据恢复
Query OK, 0 rows affected (0.02 sec)
MySQL [mytest]> select * from mt1; # 确认恢复完成后的数据 
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+ 
5 rows in set (0.01 sec) 

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/154642.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云RDS数据库查看备份空间免费额度-云淘科技

    不同类型实例的备份空间免费额度不同,本文将介绍如何查看实例备份空间的免费额度以及超出免费额度的部分如何计算。 背景信息 实例的备份文件会占用备份空间,每个RDS实例的备份空间都有一定量的免费额度,超出免费额度的备份空间使用量将会产生额外的费用。 计算公式 MariaDB云盘实例仅支持快照备份,快照备份空间的免费额度 = 200%*实例购买的存储空间(单位为G…

    阿里云数据库 2023年12月9日
  • 阿里云RDS数据库CreateDBInstanceEndpoint – 创建实例的Endpoint-云淘科技

    该接口用于为RDS MySQL集群系列实例创建Endpoint。 接口说明 适用引擎 RDS MySQL 相关功能文档 注意 使用该接口前,请仔细阅读功能文档,确保完全了解使用接口的前提条件及使用后造成的影响后,再进行操作。 增加集群只读地址 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI E…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库DescribeADInfo – 查询RDS SQL Server的AD域关联信息-云淘科技

    该接口用于查询当前实例域相关信息, 包括是否已经加入域、域名称、所使用账号等。 接口说明 适用引擎 RDS SQL Server 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的…

    阿里云数据库 2023年12月9日
  • 阿里云RDS数据库AliPG优势-云淘科技

    本文介绍AliPG的背景信息和优势。 背景信息 PostgreSQL(简称PG)是一款全球流行的企业级开源数据库,被业界誉为“最先进的开源数据库”。 AliPG兼容PostgreSQL开源数据库,于2015年正式商用,目前支持10及以上的大版本,已稳定运行多年,支撑了大量阿里巴巴集团内部以及云上的客户业务。 采用AliPG的阿里云数据库产品 RDS Post…

    阿里云数据库 2023年12月9日
  • 阿里云RDS数据库【停售/下线】2022年05月16日已下线RDS PPAS产品-云淘科技

    RDS PPAS产品已于2021年05月16日停止售卖,截止2022年05月16日,已正式停止运维更新。为了确保您产品可用性和业务连续性,建议您尽快将数据迁移至PolarDB O云原生数据库,PolarDB O高度兼容Oracle语法,覆盖RDS PPAS所有功能,并且支持弹性、一写多读等特性。 下线产品 云数据库RDS PPAS 下线详情 时间 下线说明 …

    阿里云数据库 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。