このトピックでは、コールドデータのアーカイブ機能の使用方法について説明します。開始する前に、アーカイブフォーマットを確認し、クラスターが要件を満たしていることを検証してください。詳細については、「アーカイブフォーマット比較」および「適用範囲」をご参照ください。
利用シーン
CSV フォーマットへのアーカイブ
プロダクトエディションが Cluster Edition の場合、Milvus のバージョンは以下のいずれかである必要があります:
MySQL 8.0.1(リビジョン 8.0.1.1.47 以降)。
MySQL 8.0.2(リビジョン 8.0.2.2.10 以降)。
プロダクトエディションが Multi-master Cluster (Limitless) Edition の場合、Milvus のバージョンは 8.0.1.0.13 以降である必要があります。
ORC フォーマットへのアーカイブ
プロダクトエディションが Cluster Edition の場合、リビジョンは 8.0.2.2.30 以降である必要があります。
プロダクトエディションが Multi-master Cluster (Limitless) Edition の場合、リビジョンは 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.33 以降)。
コールドデータのアーカイブ
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);
アーカイブ済みのコールドデータは単一テーブル・マルチファイル形式で保存されるため、コールドデータを表示する際には、クエリ最適化のためにパラレルクエリを使用してください。詳細については、「コールドデータのパラレルクエリ」をご参照ください。
コールドデータの変更
OSS 上のコールドデータを頻繁でない場合に変更するには、ALTER 構文を使用して、OSS から PolarDB ストレージ領域へコールドデータをインポートし、変更を行います。インポート後、OSS 上のコールドデータは同時に削除されます。データを変更した後、変更済みのテーブルデータを再度 OSS へアーカイブします。
標準テーブル
構文
ALTER TABLE table_name ENGINE[=]engine_name;パラメーター
パラメーター | 説明 |
table_name | インポートする 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;パーティションテーブル
構文
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 クラスターのみが、OSS 上の対応するファイルの削除をサポートしています:
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 上の対応するファイルを削除します。パーティションテーブル
OSS 上の対応するファイルを削除するには、
CALL dbms_oss.delete_table_file('database_name', 'table_name');コマンドを使用します。
OSS 上の対応するファイルの削除は非同期操作です。すべてのノードが OSS ファイルに依存しなくなった時点で、削除が完了します。また、トラフィックが集中している場合、この処理には若干の遅延が発生する可能性があります。
FORCE STORAGE OSS オプション
PolarDB for MySQL バージョン 8.0.2(マイナーバージョン 8.0.2.2.29 以降)のみが、OSS ファイルを強制削除する FORCE STORAGE OSS オプションをサポートしています。
標準テーブルおよび 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 |
オープンソースフォーマット | はい | はい | いいえ |
アーカイブ方法 | 手動アーカイブ: |
| |
アーカイブ速度 | 速い 説明 シングルスレッドアーカイブのみサポートされています。 | 遅い 説明 シングルスレッドアーカイブのみサポートされています。 | 速い 説明 データは PolarDB ストレージ領域へアーカイブされます。 |
クエリ速度 |
説明 シングルスレッドおよびマルチスレッドのデータ読み取りをサポートしています。 |
説明 シングルスレッドのデータ読み取りのみサポートされています。 |
|
トランザクション対応 | いいえ | いいえ | はい |
インデックス対応 | いいえ | いいえ | はい |
アーカイブ済みデータの変更方法 | OSS 上のアーカイブ済みテーブルは読み取り専用です。変更するには、まず OSS のデータを PolarDB ストレージ領域へ再インポートする必要があります。 | アーカイブ済みテーブルに対して DML 操作を実行できます。 | |
使用ストレージ容量 | InnoDB エンジンのインデックスなしテーブルと同じです。 | 同一データ量の場合、CSV ファイルが必要とするストレージ容量の 45% です。 | InnoDB エンジンの使用容量の 10%~50% に圧縮されます。正確な圧縮率はデータの特性によって異なります。 |
バックアップおよびリストア | サポートされていません。 説明
| サポートされています。 | |
アーカイブ後の影響 |
|
| アーカイブ後、テーブルへのアクセス方法を変更せずにアーカイブ済みデータをクエリできます。 |