SQL闪回

更新时间:
复制 MD 格式

本文介绍了SQL闪回功能的使用方法。

背景介绍

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

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

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

面向不同的使用场景,SQL闪回提供回滚SQL与原始SQL两种方式来恢复数据。

功能优势

  • 操作简单:轻松配置,填写少量误操作SQL信息,即可助您找回丢失的数据。

  • 灵活的恢复方式:针对不同的场景,提供回滚SQL与原始SQL两种能力,恢复方式灵活多样。

  • SQL级精确匹配能力:SQL级的误操作数据精确匹配能力,提高数据恢复的精准性。

限制与说明

  • SQL闪回生成的恢复文件默认保存7天,生成后请尽快下载。

  • SQL闪回精确匹配需要满足如下条件:

    • 执行误操作SQL前,SQL闪回精确匹配能力已开启。

    • 提供误操作SQL的TRACE_ID信息。

精确匹配与模糊匹配

SQL闪回根据您提供的误操作SQL信息,在Binlog中查找对应的匹配事件,反向生成对应的恢复SQL。受实例版本、参数设置的影响,SQL闪回支持两种Binlog事件的匹配策略:精确匹配与模糊匹配。具体的匹配策略无需选择,当未提供TRACE_ID时为模糊匹配,当提供了TRACE_ID且您的实例具备精确匹配能力时为精确匹配,否则会降级为模糊匹配。PolarDB-X SQL闪回会自动检测,选择最优的匹配策略,并在闪回任务结束后通知您。

  • 精确匹配

    针对误操作SQL,在Binlog中精确匹配出该SQL误操作的事件,生成恢复文件。

    • 优点:恢复文件中仅包含误操作SQL误删(误改)的数据,可直接使用,保证数据恢复的精准性与效率。

    • 缺点:需要满足以下的条件:

      • PolarDB-X实例版本为5.3.4-15378085及以上。

      • 执行误操作SQL前,SQL闪回精确匹配开关已开启。开启SQL精确匹配开关后,Binlog中会默认带上执行SQL的信息,增加一定的存储空间。

      • 提供误操作SQL的TRACE_ID信息。

  • 模糊匹配

    针对误操作SQL的相关信息(执行时间范围、操作表名、SQL类型等),在Binlog中匹配满足条件的事件,生成对应的恢复文件。

    • 优点:不依赖实例版本、参数设置等,所有实例都支持。

    • 缺点:无法精准匹配误删(误改)的数据,恢复文件中包含其它业务SQL改动的数据,需要您从中筛选出所需数据。

开启精确匹配

  1. 登录PolarDB分布式版控制台,前往指定实例的参数设置页面,详情请参见参数设置。

  2. 确保binlog_rows_query_log_events参数值为ON(默认为ON)。在实例的参数设置页面单击存储层页签可查看该参数。

回滚SQL与原始SQL

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

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

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

定位误操作SQL

  1. 在控制台上选择诊断与优化 > SQL审计与分析。

    说明

    如果您未开启SQL审计,请参见开启SQL审计与分析进行操作。

  2. 使用SQL审计与分析,定位误操作SQL的审计记录。关于如何快速定位误操作SQL,请参见日志分析。

  3. 获取误操作SQL数据中的sql_time、table_name、sql_type和trace_id字段。

生成恢复文件

  1. 登录PolarDB分布式版控制台。

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

  3. 在实例列表页,单击PolarDB-X 2.0页签。

  4. 找到目标实例,单击实例ID进入实例详情页。

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

  6. 填写误操作SQL的基本信息,数据库和时间范围为必填参数,表名、TRACE_ID和SQL类型可以按需要填写。

    参数说明:

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

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

  7. 单击预检,检查提供的时间范围内,Binlog是否存在。

    • 如果您提供的时间范围内,存在Binlog,则预检通过。

    • 如果您提供的时间范围内,不存在Binlog,则提示预检失败,无法恢复数据。

  8. 选择恢复方式,支持选择回滚SQL和原始SQL。

  9. SQL闪回任务完成后,会显示该任务的相关信息。 您可以单击下载按钮下载对应的恢复文件,进行数据恢复。

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