全部产品
Search
文档中心

云原生数据库 PolarDB:Fast Import使用说明

更新时间:Aug 31, 2026

PolarDB MySQL版提供的Fast Import特性,允许您在下发库表恢复任务后,等待约5~10分钟(和恢复数据量大小无关)即可查询恢复任务中库表的全量数据,无需等待恢复任务完成。

场景概述

说明

Fast Import 特性与库表恢复新流程兼容,查询操作可与恢复任务同时进行。

Fast Import特性可以加速以下两种场景:

  • 当数据或表被误删除,且无法确定具体时间点时,传统的恢复任务可能需要等待很长时间才能完成。通过Fast Import特性,您无需等待恢复任务结束即可快速查询和校验数据。

  • 当少量数据被误删除,但所在表规模较大时,Fast Import特性支持您通过INSERT ... SELECT ...的方式,快速从恢复任务的表中提取所需数据,并将其插入到被误删数据的表中,从而提升操作效率。

版本限制

适用的数据库引擎版本为MySQL 8.0.1,且小版本需为8.0.1.1.49及以上版本。您可以通过查询版本号来确认集群版本。

注意事项

说明

目前该功能在灰度中,如需使用,您可以联系我们加入白名单,启用该功能。

  • 仅支持file-per-table配置(默认配置),非压缩且非加密表,在恢复任务执行过程中查询数据。

  • 恢复任务表的数量在1000以下,系统会默认启用Fast Import特性,从而支持在恢复过程中查询全量数据。

    说明

    恢复任务数量在1000以上,系统不会启用Fast Import特性。管理任务流程会自动根据您当前下发任务判断来是否开启Fast Import特性。

  • 仅支持在读写(RW)节点和只读(RO)节点执行查询操作。如果存在列存只读(RO)节点,可使用HINT语法强制路由到读写(RW)或者行存只读(RO)节点,否则可能会查询不到数据。

  • 当buffer pool资源充足时,访问恢复状态表的效率与正常表相当,但在集群负载较高的场景下,访问恢复状态表的效率会受到限制,以降低对正常业务的影响。

  • 在恢复任务完成之前,仅允许以只读模式访问恢复的目标表。

使用说明

下发库表恢复任务

在下发库表恢复任务之后,可通过页面右上角的详情链接进入到任务详情页面

库表恢复任务共包含 6 个步骤:

  1. 初始化任务

  2. 临时节点全量恢复

  3. 临时节点增量恢复(按需)

  4. 库表恢复预处理

  5. 库表恢复

  6. 完成任务并回收资源

在任务详情页面可看到任务的实时进度,在步骤4结束后可通过show databases或 show tables等操作确认恢复任务已创建目标库/表,此时即可查询目标库/表的全量数据。

只读快速访问

您可以通过查询information_schema.fast_import_tablespaces表,获取当前恢复任务中所有支持快速只读访问的表信息。

说明

当前正处于导入状态的表可以进行快速只读访问,但在下面的查询结果中不会显示具体表名。您可以通过执行SHOW PROCESSLIST命令来查看包含dbms_rman.import的SQL语句,获取当前正在恢复的表名。

SELECT * FROM information_schema.fast_import_tablespaces;
  • 为处于恢复状态的表可只读访问全量数据。

    | 106 | root      | 127.0.0.1:49055 | NULL               | Sleep          |  13 |                        | NULL                                                                    |
    | 146 | xxx       | xxx             | NULL               | Sleep          |  43 |                        | NULL                                                                    |
    | 366 | xxx       | xxx             | NULL               | Polar Log Dump |   0 | Reading log from innodb | NULL                                                                    |
    | 368 | xxx       | xxx             | NULL               | Polar Log Ack  |   0 | Receiving from client  | NULL                                                                    |
    | 788 | xxx       | xxx             | NULL               | Sleep          | 295 |                        | NULL                                                                    |
    | xxx | xxx       | xxx             | NULL               | Query          | 332 | altering table         | /* rds internal mark */ call dbms_rman.import('test', 'sbtest1_bk03211652' |
    | 216448 | xxx    | xxx             | information_schema | Sleep          |   7 |                        | NULL                                                                    |
    | 216915 | xxx    | xxx             | NULL               | Sleep          |   0 |                        | NULL                                                                    |
    | 216916 | xxx    | xxx             | NULL               | Sleep          |   0 |                        | NULL                                                                    |
    | 536879884 | xxx |                 | test               | Query          |   0 | starting               | show processlist                                                        |
    
    31 rows in set (0.00 sec)
    
    mysql> show tables;
    +----------------------+
    | Tables_in_test       |
    +----------------------+
    | sbtest1              |
    | sbtest1_bk03211652   |
    | sbtest2              |
    | sbtest2_bk03211652   |
    +----------------------+
    4 rows in set (0.00 sec)
    
    mysql> select count(*) from sbtest1;
    +-----------+
    | count(*)  |
    +-----------+
    | 100000000 |
    +-----------+
    1 row in set (4.64 sec)
    
    mysql> select count(*) from sbtest1_bk03211652;
    +-----------+
    | count(*)  |
    +-----------+
    | 100000000 |
    +-----------+
    1 row in set (48.21 sec)
  • 为其他已开启快速访问的表可以只读访问全量数据。

    mysql> select * from information_schema.fast_import_tablespaces;
    +----------------+-------------------------+------------------------------------------------------------------+
    | LOCAL_SPACE_ID | SPACE_NAME              | REMOTE_DATA_PATH                                                 |
    +----------------+-------------------------+------------------------------------------------------------------+
    |             18 | test/sbtest2_bk03211652 | xxx/test/sbtest2_bk03211652.ibd                                  |
    +----------------+-------------------------+------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> show tables;
    +------------------------+
    | Tables_in_test         |
    +------------------------+
    | sbtest1                |
    | sbtest1_bk03211652     |
    | sbtest2                |
    | sbtest2_bk03211652     |
    +------------------------+
    4 rows in set (0.00 sec)
    
    mysql> select count(*) from sbtest2_bk03211652;
    +----------+
    | count(*) |
    +----------+
    |     1000 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> select count(*) from sbtest2;
    +----------+
    | count(*) |
    +----------+
    |     1000 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> select count(*) from sbtest1;
    +-----------+
    | count(*)  |
    +-----------+
    | 100000000 |
    +-----------+
    1 row in set (19.39 sec)
    
    mysql> select count(*) from sbtest1_bk03211652;
    +-----------+
    | count(*)  |
    +-----------+
    | 100000000 |
    +-----------+
    1 row in set (4.39 sec)
    
    mysql> show processlist;

常用问题

查询恢复的目标表数据为空?

确保当前任务已执行至“主节点库表恢复步骤”,并满足以下条件:

  • 表信息存在于information_schema.fast_import_tablespaces列表中。

  • 或者正在执行dbms_rman.import SQL操作并且满足其条件注意事项。

如果表数据量非常大,查询恢复状态中的表是否有其他影响?

Fast Import特性主要用于快速校验和恢复数据。需要注意以下事项:

  • 查询恢复中的表,其对数据库集群的影响与在正常表上执行相同数据量的查询等效。

  • 不推荐对正在恢复的表执行连续的、长时间的大规模查询操作。

对恢复的目标表做更新操作报错?

在information_schema.fast_import_tablespaces列表中的表以及正在执行dbms_rman.importSQL操作的表,表示这些表正处于恢复或即将进行恢复的状态。这些表仅允许只读访问,不支持任何更新或修改操作。

mysql> select * from information_schema.fast_import_tablespaces;
+----------------+-------------------------+-----------------------------------------------------------+
| LOCAL_SPACE_ID | SPACE_NAME              | REMOTE_DATA_PATH                                          |
+----------------+-------------------------+-----------------------------------------------------------+
|             24 | test/sbtest2_bk03211708 | xxx/test/sbtest2_bk03211708.ibd                           |
+----------------+-------------------------+-----------------------------------------------------------+
1 row in set (0.00 sec)

mysql> delete from sbtest2_bk03211708 limit 10;
ERROR 1288 (HY000): The target table sbtest2_bk03211708 of the DELETE is not updatable
mysql>