全部产品
Search
文档中心

SQL闪回

更新时间: 2020-08-13

背景介绍

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中会默认带上执行SSQL的信息,增加一定的RDS存储空间。如您需要使用精确匹配的能力,建议升级DRDS后开启,详情请参见开启精确匹配开关

操作步骤

生成恢复文件

  1. 登录DRDS控制台

  2. 在页面左上角选择目标实例所在地域。

  3. 在实例列表页面找到目标实例,单击实例ID。

  4. 在左侧导航栏中单击数据恢复>SQL闪回

  5. SQL闪回页面,设置如下参数。

    参数 说明
    数据库
    DRDS数据库名称。
    表名 执行误操作SQL的表名,可不填。
    时间范围 误操作SQL执行的大致时间范围,开始时间需早于误操作SQL开始执行时间,结束时间需晚于误操作 SQL 执行结束时间。为了保证恢复的效率,建议时间范围尽可能精确,最好能限定在5分钟内。
    TRACE_ID DRDS会为每条执行的SQL分配唯一的TRACE_ID,可选填。
    SQL类型 您可以选择INSERT、UPDATE、DELETEE中的一个或多个SQL类型。
  6. 单击预检

    • 如果您提供的时间范围内,不存在RDS BINLOG,则提示预检失败,无法恢复数据。
    • 如果您提供的时间范围内,存在RDS BINLOG,则提示预检通过
  7. 预检通过对话框内,选择恢复SQL类型为回滚SQL原始SQL,详情请参见回滚SQL与原始SQL

  8. 单击生成SQL
    1
  9. SQL闪回任务完成后,您可以在SQL闪回任务列表查看该任务是否是精确匹配,实际恢复的数据行数等信息。

    如果您需要对数据进行恢复,可以操作中的下载按钮下载对应的文件进行数据恢复。恢复文件默认只保存7 天,如有需要请尽快下载。

开启精确匹配

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

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

名词解释

精确匹配与模糊匹配

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

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

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

回滚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。