SQL 闪回
背景介绍
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 闪回。
- 进入 DRDS 控制台,选择指定地域。
- 在实例列表页面单击实例名称。
- 在左侧导航栏中单击 SQL 闪回,进入SQL 闪回页面,如下图中1所示。
按照操作提示,填写误操作 SQL 的基本信息,包括数据库、误操作 SQL 执行的时间范围、表名、TRACE_ID, SQL 类型。 如何获取误操 SQL的相关信息,请参考:定位误操作 SQL。
参数说明:
SQL 执行时间范围:误操作 SQL 执行的大致时间范围,开始时间早于误操作 SQL 开始执行时间,结束时间晚于误操作 SQL 执行结束时间。为了保证恢复的效率,建议时间范围尽可能精确,限定在5分钟范围内。
TRACE_ID: DRDS 会为每条执行的 SQL 分配唯一的 TRACE_ID,误操作 SQL 的 TRACE_ID 值可以通过DRDS SQL 审计获取。
点击预检按钮,检查提供的时间范围内,RDS BINLOG 是否存在,如上图中2所示。
- 如果您提供的时间范围内,已不存 RDS BINLOG,则提示预检失败,无法恢复数据。
- 如果您提供的时间范围内,存在RDS BINLOG,则预检通过。
选择恢复方式,支持选择回滚 SQL 和 原始 SQL,如下图所示。恢复方式的选择,请参考:回滚 SQL 与 原始 SQL。
- 点击生成 SQL 按钮,即可生成 SQL 闪回任务。SQL 闪回页面会展示当前实例运行的 SQL 闪回任务状态。 运行中的任务如下图中 1 所示。
- SQL 闪回任务完成后,会显示该任务是否是精确匹配,实际恢复的数据行数等信息,如上图中 2 所示。 用户可以点击下载按钮下载对应的恢复文件,进行数据恢复。
注意:恢复文件默认保存 7 天,请尽快下载。
定位误操作 SQL
- 选择误操作的数据库。
- 点击 SQL 闪回页面的 SQL 审计与分析链接,前往SQL 审计与分析页面。如果您未开启 SQL 审计,请使用SQL 审计的导入历史数据功能,最多支持导入7天内的历史 SQL 记录,请参考:开启 SQL 日志审计。
- 使用 SQL 审计与分析,定位误操作 SQL 的审计记录。如何快速定位误操作 SQL, 请参考:SQL 日志分析。
- 获取误操作 SQL 数据中的 sql_time, table_name, sql_type, trace_id 字段,如下图所示::
开启精确匹配
前提条件:您的 DRDS 实例版本在 5.3.4-15378085 及以上,如果低于该版本,建议升级后开启。
- 进入DRDS控制台,前往指定实例的参数设置页面,参考:DRDS 参数设置。
- 修改对应数据库的SQL 闪回精确匹配开关的参数值为 ON。
名词解释
精确匹配与模糊匹配
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 示例。
回滚 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。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论