すべてのプロダクト
Search
ドキュメントセンター

PolarDB:高速インポート

最終更新日:Sep 01, 2026

PolarDB for MySQL が提供する Fast Import 機能を使用すると、データベースとテーブルの復元タスクを送信した後、復元タスクの完了を待つことなく、復元対象のデータサイズに関わらず約 5~10 分で、復元タスク内のデータベースとテーブルの全データをクエリできます。

シナリオの概要

説明

高速インポート機能は 新しいデータベースおよびテーブルの復元プロセス と互換性があり、復元タスクと同時にクエリ操作を実行できます。

高速インポート機能は、次の 2 つのシナリオを高速化できます。

  • データまたはテーブルが誤って削除され、特定のポイントインタイムを特定できない場合、従来の復元タスクでは完了までに長時間かかることがあります。高速インポート機能を使用すると、復元タスクの完了を待たずにデータを迅速にクエリして検証できます。

  • テーブルが大きいにもかかわらず少量のデータが誤って削除された場合、高速インポート機能は INSERT ... SELECT ... を使用して、リストアタスク内のテーブルから必要なデータを迅速に抽出し、データが誤って削除されたテーブルに挿入することで、運用効率を向上させます。

バージョン要件

適用可能なデータベースエンジンバージョンは MySQL 8.0.1 であり、マイナーバージョンは 8.0.1.1.49 以降である必要があります。バージョン番号のクエリ により、クラスターのバージョンを確認できます。

注意事項

説明

この機能は現在、カナリアリリース段階です。この機能を使用するには、お問い合わせのうえ、ホワイトリストへの登録を申請してください。

  • 非圧縮かつ非暗号化のテーブルでは、file-per-table 構成 (デフォルト構成) のみサポートされます。復元タスクの実行中にデータをクエリできます。

  • 復元タスクのテーブル数が 1,000 未満の場合、システムはデフォルトで Fast Import 機能を有効にし、復元プロセス中に全データをクエリできます。

    説明

    復元タスクの数が 1,000 を超えると、システムは Fast Import 機能を有効にしません。 タスク管理フローは、お客様が送信したタスクに基づいて Fast Import 機能を有効にするかどうかを自動的に判断します。

  • クエリ操作は、読み取り/書き込み (RW) ノードおよび読み取り専用 (RO) ノードでのみサポートされます。列ストア読み取り専用 (RO) ノードが存在する場合は、HINT 構文 を使用して、クエリを読み取り/書き込み (RW) または行ストア読み取り専用 (RO) ノードに強制的にルーティングしてください。そうしないと、データが返されない場合があります。

  • buffer pool のリソースが十分な場合、復元状態のテーブルへのアクセスは、通常のテーブルへのアクセスと同等の効率を発揮します。しかし、クラスターが高負荷のシナリオでは、通常の業務への影響を軽減するため、復元状態のテーブルにアクセスする効率は制限されます。

  • 復元タスクが完了する前は、復元対象のテーブルには読み取り専用モードでのみアクセスできます。

使用方法

データベースおよびテーブルの復元タスクの送信

データベースおよびテーブルの復元タスクを送信した後、ページ右上隅にある詳細リンクからタスクの詳細ページに移動できます。

データベースおよびテーブルの復元タスクは 6 つの手順で構成されます。

  1. タスクの初期化

  2. 一時ノードでのフル復元

  3. 一時ノードでの増分復元 (必要に応じて)

  4. データベースおよびテーブルの復元の前処理

  5. データベースおよびテーブルの復元

  6. タスクの完了とリソースの回収

タスク詳細ページでは、タスクのリアルタイムの進捗を表示できます。ステップ 4 が完了すると、show databasesshow 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 内部マーク */ 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 操作が実行されており、注意事項に記載されている条件を満たしている。

テーブルのデータ量が非常に大きい場合、復元中のテーブルをクエリすると他に影響はありますか?

高速インポート機能は主に、迅速な検証とデータ復元に使用します。次の点に注意してください。

  • 復元中のテーブルへのクエリは、同じデータ量の通常のテーブルをクエリする場合と同等の影響をデータベースクラスターに与えます。

  • 復元中のテーブルに対して、連続的で長時間実行される大規模なクエリ操作は実行しないことを推奨します。

復元対象テーブルに対して更新操作を行うとエラーになるのはなぜですか?

information_schema.fast_import_tablespaces リストに記載されているテーブル、および dbms_rman.import SQL 操作が実行されているテーブルは、現在復元中であるか、まもなく復元されます。これらのテーブルでは読み取り専用アクセスのみが許可され、更新または変更操作はサポートされていません。

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>