全部产品
云市场

SQL 闪回

更新时间:2019-03-20 10:52:25

背景介绍

DRDS SQL 闪回针对 SQL 误操作,提供行级数据的恢复能力。

当用户在 DRDS 上执行误操作 SQL (INSERT、UPDATE、DELETE) 后,使用 SQL 闪回,提供相关的误操作 SQL 信息,即可从BINLOG中找到匹配的事件,生成对应的恢复文件,下载后根据需求恢复数据。

SQL 闪回针对误操作 SQL,支持模糊匹配与精确匹配两种丢失数据的定位策略,以及自动选择匹配策略的能力,详见:精确匹配与模糊匹配

面向不同的使用场景,SQL 闪回提供两种恢复方式:回滚 SQL 与原始 SQL,用户可以选择最合适的方式,恢复数据。

功能优势

  • 操作简单:轻松配置,填写少量误操作 SQL 信息,即可助您找回丢失的数据。
  • 快速轻量:不依赖 RDS 的备份策略,只需在误操作 SQL 执行前开启RDS 日志备份即可快速恢复误操作数据。
  • 灵活的恢复方式:针对不同的场景,提供回滚 SQL 与 原始 SQL 两种能力,恢复方式灵活多样。
  • SQL 级精确匹配能力: SQL 级的误操作数据精确匹配能力,提高数据恢复的精准性。

限制与说明

  • SQL 闪回依赖 RDS BINLOG 保存时间,请开启 RDS 日志备份。RDS BINLOG 存在保存时限,误操作数据后请尽快使用 SQL 闪回生成恢复文件。
  • SQL 闪回生成的恢复文件默认保存 7 天,生成后请尽快下载。
  • SQL 闪回精确匹配需要满足如下条件:
    • DRDS 实例版本在 5.3.4-15378085 版本及以上,版本信息详见:版本说明
    • DRDS 数据库使用的 RDS 是 5.6 及上版本。
    • 执行误操作 SQL 前,SQL 闪回精确匹配开关已开启。
    • 提供误操作 SQL 的 TRACE_ID 信息。
  • 为了保证数据恢复的精准性,DRDS 对于在 5.3.4-15378085 版本及以上实例新建的数据库,默认开启精确匹配的开关。开启后,RDS BINLOG 中会默认带上执行 SQL 的信息,增加一定的 RDS 存储空间。如您需要使用精确匹配的能力,建议升级DRDS后开启,参考:开启精确匹配开关

操作步骤

生成恢复文件

建议:如果您之前未使用过 SQL 闪回功能,可以任选一条样例 SQL,按照下文的操作步骤试用,观察生成的恢复文件,有助于更好地理解 SQL 闪回。

  1. 进入 DRDS 控制台,选择指定地域。
  2. 在实例列表页面单击实例名称。
  3. 在左侧导航栏中单击 SQL 闪回,进入SQL 闪回页面,如下图中1所示。
  4. 按照操作提示,填写误操作 SQL 的基本信息,包括数据库、误操作 SQL 执行的时间范围、表名、TRACE_ID, SQL 类型。 如何获取误操 SQL的相关信息,请参考:定位误操作 SQLimage.png

    参数说明:

    • SQL 执行时间范围:误操作 SQL 执行的大致时间范围,开始时间早于误操作 SQL 开始执行时间,结束时间晚于误操作 SQL 执行结束时间。为了保证恢复的效率,建议时间范围尽可能精确,限定在5分钟范围内。

    • TRACE_ID: DRDS 会为每条执行的 SQL 分配唯一的 TRACE_ID,误操作 SQL 的 TRACE_ID 值可以通过DRDS SQL 审计获取。

  5. 点击预检按钮,检查提供的时间范围内,RDS BINLOG 是否存在,如上图中2所示。

    1. 如果您提供的时间范围内,已不存 RDS BINLOG,则提示预检失败,无法恢复数据。
    2. 如果您提供的时间范围内,存在RDS BINLOG,则预检通过。
  6. 选择恢复方式,支持选择回滚 SQL 和 原始 SQL,如下图所示。恢复方式的选择,请参考:回滚 SQL 与 原始 SQL

    image.png

  7. 点击生成 SQL 按钮,即可生成 SQL 闪回任务。SQL 闪回页面会展示当前实例运行的 SQL 闪回任务状态。 运行中的任务如下图中 1 所示。image.png
  8. SQL 闪回任务完成后,会显示该任务是否是精确匹配,实际恢复的数据行数等信息,如上图中 2 所示。 用户可以点击下载按钮下载对应的恢复文件,进行数据恢复。

    注意:恢复文件默认保存 7 天,请尽快下载。

定位误操作 SQL

  1. 选择误操作的数据库。
  2. 点击 SQL 闪回页面的 SQL 审计与分析链接,前往SQL 审计与分析页面。如果您未开启 SQL 审计,请使用SQL 审计的导入历史数据功能,最多支持导入7天内的历史 SQL 记录,请参考:开启 SQL 日志审计image.png
  3. 使用 SQL 审计与分析,定位误操作 SQL 的审计记录。如何快速定位误操作 SQL, 请参考:SQL 日志分析
  4. 获取误操作 SQL 数据中的 sql_time, table_name, sql_type, trace_id 字段,如下图所示::image.png

开启精确匹配

前提条件:您的 DRDS 实例版本在 5.3.4-15378085 及以上,如果低于该版本,建议升级后开启。

  1. 进入DRDS控制台,前往指定实例的参数设置页面,参考:DRDS 参数设置
  2. 修改对应数据库的SQL 闪回精确匹配开关的参数值为 ON。image.png

名词解释

精确匹配与模糊匹配

SQL 闪回根据用户提供的误操作 SQL 信息,在 RDS BINLOG 中查找对应的匹配事件,反向生成对应的恢复 SQL。受实例版本,参数设置的影响,SQL 闪回支持两种 BINLOG 事件的匹配策略:精确匹配与模糊匹配。具体的匹配策略无需用户选择, DRDS SQL 闪回会自动检测,选择最优的匹配策略,并在闪回任务结束后通知用户。

精确匹配

针对误操作SQL,在 RDS BINLOG 中精确匹配出该 SQL 误操作的事件,生成恢复文件。
优点:恢复文件中仅包含误操作 SQL 误删(误改)的数据,可直接使用,保证数据恢复的精准性与效率。
缺点:需要满足以下的条件:

  • DRDS 实例版本在 5.3.4-15378085 版本及以上。
  • DRDS 数据库使用的 RDS 是 5.6 及上版本。
  • 执行误操作 SQL 前,SQL 闪回精确匹配开关已开启。开启 SQL 精确匹配开关后,RDS BINLOG 中会默认带上执行 SQL 的信息,增加一定的 RDS 存储空间。
  • 提供误操作 SQL 的 TRACE_ID 信息。

    注:SQL 闪回精确匹配开关对于5.3.4-15378085 版本及以上的新建数据库默认开启,低版本实例建议升级后手动开启,请参考:开启精确匹配开关

模糊匹配

针对误操作 SQL 的相关信息(执行时间范围、操作表名、SQL 类型等),在 RDS BINLOG 中匹配满足条件的事件,生成对应的恢复文件
优点:不依赖实例版本、参数设置等,所有实例都支持。
缺点:无法精准匹配误删(误改)的数据,恢复文件中包含其它业务 SQL 改动的数据,需要用户从中筛选出所需数据。

回滚 SQL 与原始 SQL

为了支持不同的业务场景,DRDS SQL 闪回提供生成回滚 SQL 与生成原始 SQL 两种恢复方式,用户在生成恢复 SQL 文件前,需要根据使用场景,选择对应的恢复方式。

下图给出了 SQL 闪回针对一条误操作,生成的回滚 SQL 与 原始 SQL 示例。image.png

回滚 SQL

逆序遍历 BINLOG 中的匹配事件,对 INSERT、UPDATE、DELETE事件进行逆反操作,生成的 SQL。

  • INSERT 逆反等价于 DELETE
  • DELETE 逆反等价于 REPLACE
  • UPDATE 逆反等价于 UPDATE SET value = 变更前

使用方式:原表执行,对现有数据进行覆盖性恢复。
适用场景:当需要恢复的数据没有冲突或者接受部分冲突数据被覆盖,建议生成回滚 SQL。

原始 SQL

顺序遍历 BINLOG 中的匹配事件,对 INSERT、UPDATE、DELETE事件进行全记录的镜像构造处理,生成的 SQL。

  • INSERT 镜像等价于 INSERT
  • DELETE 镜像等价于 INSERT
  • UPDATE 镜像等价于 INSERT 变更前的值

使用方式:临时表执行,写入误操作前的原始数据,与现有数据进行对比,分析冲突后决定最终数据。
适用场景:当需要恢复的数据与当前数据存在冲突时,建议生成原始 SQL。