全部產品
Search
文件中心

PolarDB:Fast Import使用說明

更新時間:Sep 01, 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>