コールドデータをアーカイブする前に、希望するアーカイブフォーマットを確認し、クラスターが要件を満たしていることを確認してください。詳細については、「アーカイブフォーマットの比較」および「前提条件」をご参照ください。
適用範囲
CSV フォーマットでのアーカイブ
プロダクトエディションが Cluster Edition の場合、Milvus バージョンは次のいずれかである必要があります。
MySQL 8.0.1、マイナーバージョン 8.0.1.1.47 以降。
MySQL 8.0.2、リビジョンバージョン 8.0.2.2.10 以降。
マルチマスタークラスター (Limitless) Edition の場合、カーネルバージョンは 8.0.1.0.13 以降である必要があります。
ORC フォーマットでのアーカイブ
Cluster Edition の場合、リビジョンバージョンは 8.0.2.2.30 以降である必要があります。
マルチマスタークラスター (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 以降。
コールドデータのアーカイブ
Object Storage Service (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 クラスターのみが、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 上の対応するファイルを削除します。パーティションテーブル
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 外部テーブル、およびパーティションテーブルのアーカイブには特定の制限があります。ビジネスに影響を与えないように、データをアーカイブする前にこれらの制限を確認してください。
アーカイブされたコールドデータは、お客様自身のバケットではなく、システムのデフォルトの Object Storage Service (OSS) バケットに保存されます。現在、アーカイブされたデータのリストは PolarDB コンソールでのみ表示できます。
パーティションテーブルのアーカイブ方法の説明:
パーティションテーブルのアーカイブ:パーティションテーブル内の特定のパーティションをインプレースでアーカイブします。データは元のテーブルに残りますが、そのパーティションの記憶媒体が PolarDB (ホットストレージ) から OSS (コールドストレージ) に変更され、テーブルはホットパーティションとコールドパーティションの両方を含むハイブリッドパーティションテーブルになります。
パーティションを OSS 外部テーブルにアーカイブ:この方法では、パーティションから新しい別の OSS 外部テーブルにデータを移動します。その後、元のパーティションはテーブルから削除されます。
項目 | CSV | ORC | X-Engine |
オープンソースフォーマット | はい | はい | いいえ |
アーカイブ方法 | 手動アーカイブ: |
| |
アーカイブ速度 | 高速 説明 シングルスレッドのアーカイブのみサポートされています。 | 遅い 説明 シングルスレッドのアーカイブのみサポートされています。 | 高速 説明 データは PolarStore ストレージ領域にアーカイブされます。 |
クエリ速度 |
説明 シングルスレッドとマルチスレッドのデータ読み取りの両方がサポートされています。 |
説明 シングルスレッドのデータ読み取りのみがサポートされています。 |
|
トランザクションサポート | いいえ | いいえ | はい |
インデックス機能 | いいえ | いいえ | はい |
アーカイブ済みデータの変更方法 | OSS のアーカイブ済みテーブルは読み取り専用です。データを変更するには、OSS から PolarDB ストレージ領域にデータをインポートする必要があります。 | アーカイブ済みテーブルに対して DML 操作を実行できます。 | |
使用ストレージ領域 | ストレージ領域は、InnoDB ストレージエンジンのインデックスのないテーブルと同等です。 | 同じデータ量の場合、CSV フォーマットが必要とするストレージ領域の 45% を使用します。 | InnoDB ストレージエンジンと比較して、ストレージ領域は元のサイズの 10% から 50% に圧縮できます。具体的な圧縮率はデータの特性によって異なります。 |
バックアップと復元 | サポートされていません。 説明
| サポートされています。 | |
アーカイブ後の影響 |
|
| アーカイブ後、テーブルへのアクセス方法を変更せずにアーカイブされたデータをクエリできます。 |