コールドデータをアーカイブする前に、希望するアーカイブフォーマットを確認し、クラスターが要件を満たしていることを確認してください。詳細については、「アーカイブフォーマットの比較」および「前提条件」をご参照ください。
適用範囲
CSV フォーマットへのアーカイブ
クラスターエディションは Cluster Edition:
標準テーブルのアーカイブ:
MySQL 8.0.1、リビジョン 8.0.1.1.47 以降。
MySQL 8.0.2、リビジョン 8.0.2.2.10 以降。
パーティションテーブルのアーカイブ:
MySQL 8.0.2、リビジョン 8.0.2.2.34.1 以降。
クラスターエディションが マルチマスタークラスター (Limitless) Edition の場合:
MySQL 8.0.1、リビジョン 8.0.1.0.13 以降。
ORC フォーマットへのアーカイブ
クラスターエディションは Cluster Edition です:
標準テーブルのアーカイブ:MySQL 8.0.2、リビジョン 8.0.2.2.30 以降。
パーティションテーブルのアーカイブ:MySQL 8.0.2、リビジョン 8.0.2.2.34.1 以降。
クラスターエディションが マルチマスタークラスター (Limitless) Edition の場合:MySQL 8.0.2、リビジョン 8.0.2.2.30 以降。
X-Engine フォーマットへのアーカイブ
標準テーブルのアーカイブ:
MySQL 8.0.1、リビジョン 8.0.1.1.31 以降。
MySQL 8.0.2、リビジョン 8.0.2.2.12 以降。
パーティションテーブルのアーカイブ:MySQL 8.0.2、リビジョン 8.0.2.2.12 以降。
X-Engine 列ストアテーブルへのアーカイブ:MySQL 8.0.2、リビジョン 8.0.2.2.34.1 以降。
パラメーター
コールドデータアーカイブ機能を使用する際、ビジネス要件に基づいて、クラスターの パラメーター ページで次のパラメーターを 設定できます。
パラメーター | レベル | 説明 |
| グローバル | 自動コールドデータアーカイブ (DLM) 機能のスイッチです。有効な値:
説明
|
| グローバル | InnoDB 以外のエンジンパーティションを含むパーティションテーブルの作成またはアーカイブを許可するかどうかを制御します。有効な値:
説明
|
| グローバル / セッション | OSS テーブルの OSS メタデータ (meta) 管理を有効にするかどうかを制御します。
|
| グローバル / セッション | OSS テーブルのクエリ時にファイルレベルのフィルタリング (ファイルフィルター) を有効にするかどうかを制御します。この機能は、最小/最大統計とブルームフィルターを使用して、無関係なデータファイルをスキップし、スキャンされる OSS データ量を削減します。この機能には、
|
| グローバル / セッション | データライフサイクル管理 (DLM) 機能による、アーカイブされた OSS パーティションの自動プルーニングのスイッチです。DML 操作 (UPDATE/DELETE) が実行されると、システムは OSS (ORC/CSV) にアーカイブ中のパーティションと、すでに OSS にアーカイブされているパーティションを自動的にプルーニングします。これにより、DML 操作がアーカイブによってブロックされるのを防ぎ、DML と DDL の間の競合を解決します。有効な値:
|
| グローバル / セッション | 自動クエリプルーニングのスイッチです。SELECT クエリが実行されると、システムは OSS (ORC/CSV) パーティションを自動的にプルーニングし、コールドデータへのアクセスによる低速クエリを防ぎます。有効な値:
|
コールドデータのアーカイブ
OSS へのアーカイブ:まず、コールドデータアーカイブを有効にする必要があります。コールドデータをアーカイブする際、標準テーブルまたはパーティションテーブルのアーカイブを選択できます。
標準テーブル
パーティションテーブル
パーティションテーブルの特定のパーティションをインプレースで手動アーカイブするか、OSS 外部テーブルにアーカイブできます。詳細については、「パーティションのインプレースアーカイブ」または「パーティションの OSS 外部テーブルへのアーカイブ」をご参照ください。
データライフサイクル管理 (DLM) ポリシーを作成して、コールドデータを自動的にアーカイブします。詳細については、「コールドデータの自動アーカイブ」をご参照ください。
X-Engine へのアーカイブ:まず、コールドデータアーカイブと高圧縮エンジン (X-Engine) を有効にする必要があります。コールドデータをアーカイブする際、標準テーブルまたはパーティションテーブルのアーカイブを選択できます。
標準テーブル
パーティションテーブル
パーティションテーブルの特定のパーティションを X-Engine パーティションに手動でアーカイブできます。詳細については、「X-Engine へのデータアーカイブ」をご参照ください。
データライフサイクル管理 (DLM) ポリシーを作成して、コールドデータを自動的にアーカイブします。詳細については、「パーティションテーブルの X-Engine へのアーカイブ」をご参照ください。
コールドデータのクエリ
標準テーブル
選択したアーカイブフォーマットに関係なく、テーブルへのアクセス方法を変更せずにアーカイブされたデータをクエリできます。
パーティションテーブル
OSS 外部テーブルへのアーカイブ:このデータをクエリするには、異なるアクセス方法が必要です。指定されたアーカイブテーブルをクエリする必要があります。詳細については、「パーティションの OSS 外部テーブルへのアーカイブ」をご参照ください。
パーティションのインプレースアーカイブ:アーカイブ後、テーブルはハイブリッドパーティションテーブルになります。詳細については、「ハイブリッドパーティションのクエリ」をご参照ください。
異なるストレージエンジン上のパーティションをクエリするには、3つの方法があります:
hybrid_partition_query_mix_engine_enabledパラメーターを ON に設定します。クエリは InnoDB、X-Engine、および OSS パーティションからデータを返します。例:-- t1 はハイブリッドパーティションテーブルです。 SELECT * FROM t1;hybrid_partition_query_mix_engine_enabledパラメーターを OFF に設定します。クエリは InnoDB と X-Engine パーティションからのみデータを返します。例:-- t1 はハイブリッドパーティションテーブルです。 SELECT * FROM t1;名前で特定のパーティションをクエリします。これにより、ストレージエンジンに関係なく、指定されたパーティションからデータが取得されます。例:
-- t1 はハイブリッドパーティションテーブルで、p1 はクエリするパーティションの名前です。 SELECT * FROM t1 partition (p1);
システムは、アーカイブされたコールドデータをテーブルごとにマルチファイル形式で保存します。クエリパフォーマンスを最適化するには、パラレルクエリを使用します。詳細については、「コールドデータに対するパラレルクエリ」をご参照ください。
コールドデータの変更
Object Storage Service (OSS) に保存されているコールドデータを頻繁に変更しない場合は、ALTER 文を使用して PolarDB ストレージ領域に戻して変更します。その後、システムは OSS からデータを自動的に削除します。データを変更した後、テーブルデータを再度 OSS にアーカイブできます。
標準テーブル
構文
ALTER TABLE table_name ENGINE[=]engine_name;パラメーター
パラメーター | 説明 |
table_name | PolarDB ストレージ領域に戻す OSS テーブルの名前。 |
engine_name | テーブルを戻した後に使用するストレージエンジン。 |
注意事項
OSS テーブルは読み取り専用です。INSERT、UPDATE、または DELETE 文を使用して変更することはできません。アーカイブされたコールドデータを変更するには、OSS テーブルを InnoDB テーブルなどの読み書き可能なテーブルに変換する必要があります。読み取り専用の OSS テーブルを変更しようとすると、次のエラーが返されます:
1036 - Table 't' is read only例
oss_test データベースの OSS テーブル t を PolarDB ストレージ領域に戻します。
ALTER TABLE `oss_test`.`t` ENGINE = InnoDB;InnoDB テーブル t のデータを変更します。変更が完了したら、InnoDB エンジンからテーブル t を OSS に再度アーカイブします。例:
ALTER TABLE t ENGINE = CSV CONNECTION = 'default_oss_server';または
ALTER TABLE t ENGINE = CSV STORAGE OSS;パーティションテーブル
パーティションテーブルのコールドデータを変更するには、ご利用の PolarDB for MySQL クラスターがバージョン 8.0.2、リビジョンバージョン 8.0.2.2.34 以降である必要があります。
構文
ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);パラメーター
パラメーター | 説明 |
table_name | 戻す OSS テーブルの名前。 |
part_name | 戻すパーティションの名前。 |
partition_definition | これは、戻したいパーティションの |
例
OSS にアーカイブされているパーティションテーブル t のパーティション p1 のデータを PolarDB ストレージ領域に戻します。
ALTER TABLE t REORGANIZE PARTITION p1 INTO(PARTITION p1 values less than(100));コールドデータの削除
-
この機能は、次のバージョンを実行する PolarDB for MySQL クラスターでのみサポートされています:
-
バージョン 8.0.1、かつマイナーバージョンが 8.0.1.1.42 以降。
-
バージョン 8.0.2、かつマイナーバージョンが 8.0.2.2.23 以降。
-
-
クラスターのマイナーバージョンが上記の要件を満たしていない場合、OSS 上の対応するファイルを削除することはできません。クラスターのマイナーバージョンをアップグレードしてください。詳細については、「マイナーバージョン管理」をご参照ください。
OSS 上のテーブルを削除したり、PolarDB ストレージ領域にインポートし直したりした後、OSS 上のファイルは自動的に削除されません。データが不要になったことを確認した後、次のように OSS 上の対応するファイルを削除します。詳細については、「OSS 上の対応するファイルの削除」をご参照ください。
標準テーブルと OSS 外部テーブル
DROP TABLEを使用してアーカイブされたテーブルを削除します。その後、CALL dbms_oss.delete_table_file('database_name', 'table_name');コマンドを実行して、OSS 上の対応するファイルを削除します。パーティションテーブル
CALL dbms_oss.delete_table_file('database_name', 'table_name');コマンドを実行して、OSS 上の対応するファイルを削除します。
OSS 上の対応するファイルを削除する操作は非同期で実行されます。ファイルは、クラスター内のすべてのノードがそれらに依存しなくなった後にのみ完全に削除されます。このプロセスは、トラフィックが多い場合に遅延することがあります。
FORCE STORAGE OSS オプション
OSS ファイルを強制的に削除する FORCE STORAGE OSS オプションは、マイナーバージョンが 8.0.2.2.29 以降の PolarDB for MySQL 8.0.2 クラスターでのみサポートされています。
標準テーブルと OSS 外部テーブル
DROP TABLE table_name [FORCE STORAGE OSS];説明DROP TABLE コマンドの FORCE STORAGE OSS オプションは、ワンクリッククリーンアップ機能を提供します。テーブル構造を削除する際に、関連する OSS ストレージファイルを自動的に削除します。
パーティションテーブル
ALTER TABLE table_name DROP PARTITION part_name [FORCE STORAGE OSS];説明ALTER TABLE 文の DROP PARTITION 句を FORCE STORAGE OSS オプションと共に使用すると、パーティションテーブルのメタデータとそれに対応する OSS ストレージファイルを同期的に削除できます。
CHANGE PARTITION ENGINE
ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = CSV|ORC [FORCE STORAGE OSS]説明CHANGE PARTITION ENGINE のコールドデータアーカイブ機能は、同名のファイルを自動的に置き換える強制上書きメカニズムを提供します。
アーカイブフォーマットの比較
コールドデータをアーカイブする際、以下の比較に基づいて適切なフォーマットを評価し、選択できます。
標準テーブル、OSS 外部テーブル、およびパーティションテーブルのアーカイブには特定の制限があります。ビジネスへの影響を避けるため、アーカイブする前にこれらの制限を確認してください。
コールドデータがアーカイブされた後、データはご自身の OSS ではなく、システムが提供するデフォルトの Object Storage Service (OSS) バケットに保存されます。現在、アーカイブされたデータのリストは PolarDB コンソールでのみ表示できます。
パーティションテーブルのアーカイブ方法:
パーティションテーブルのアーカイブ:パーティションをインプレースでアーカイブします。データは元のテーブルに残りますが、そのパーティションの記憶媒体が PolarDB (ホットストレージ) から OSS (コールドストレージ) に変わります。テーブルは、ホットパーティションとコールドパーティションの両方を含むハイブリッドパーティションテーブルになります。
パーティションの OSS 外部テーブルへのアーカイブ:パーティションのデータをテーブルから移動し、新しい独立した OSS 外部テーブルに保存します。元のパーティションはソーステーブルから削除されます。
比較項目 | CSV | ORC | X-Engine |
オープンソースフォーマット | はい | はい | いいえ |
アーカイブ方法 | 手動アーカイブ: |
| |
アーカイブ速度 | 速い 説明 シングルスレッドのアーカイブのみサポートされています。 | 遅い 説明 シングルスレッドのアーカイブのみサポートされています。 | 速い 説明 データは PolarStore ストレージにアーカイブされます。 |
クエリ速度 |
説明 シングルスレッドおよびマルチスレッドの読み取りの両方がサポートされています。 |
説明 シングルスレッドの読み取りのみサポートされています。 |
|
トランザクションサポート | いいえ | いいえ | はい |
インデックス機能 | いいえ | いいえ | はい |
アーカイブ済みデータの変更方法 | OSS のアーカイブ済みテーブルは読み取り専用です。データを変更するには、OSS から PolarDB ストレージにインポートし直す必要があります。 | アーカイブ済みテーブルは DML 操作をサポートします。 | |
ストレージ領域の使用量 | インデックスのない InnoDB テーブルと同じです。 | 同じデータ量の場合、ORC は CSV が使用するストレージ領域の約 45% を使用します。 | データを InnoDB サイズの 10%~50% に圧縮します。実際の圧縮率はデータの特性によって異なります。 |
バックアップとリカバリ | 非対応。 説明
| 対応。 | |
アーカイブ後の影響 |
|
| アーカイブ後、アクセス方法を変更せずにアーカイブされたデータをクエリできます。 |