PolarDB for MySQLクラスターのコールドデータアーカイブ機能を使用して、アクセス頻度が低く、OSS (Object Storage Service) に更新されることの少ないデータをアーカイブできます。 これにより、データ保存コストを大幅に削減できます。 このトピックでは、コールドデータのアーカイブ機能について説明します。
制御ポリシー機能の動作
次の図は、コールドデータがCSVまたはORC形式でアーカイブされる方法を示しています。 PolarDBクラスターのホットデータはPolarStoreに保存されます。 クラスターノードは、PolarFileSystemを使用してPolarStoreのデータにアクセスします。 データストレージのコストを削減し、ホットデータとコールドデータを分離するために、PolarStoreからOSSにコールドデータを転送できます。
一般的なテーブルの場合、手動でコールドデータをCSVまたはORC形式でOSSにアーカイブできます。 PolarDBノードは、内部ネットワークを介してOSSのコールドデータにアクセスできます。
パーティションテーブルの場合、コールドデータをCSVまたはORC形式でOSSに手動でアーカイブできます。 プライマリノードでデータライフサイクル管理 (DLM) ポリシーを作成して、コールドデータを自動的にアーカイブすることもできます。 コールドデータアーカイブ機能を使用して、パーティションテーブルの特定のデータをOSS外部テーブルとしてOSSにアーカイブしたり、パーティションテーブルの特定のパーティションをOSSに直接転送したりできます。
アーカイブされたデータは、OSSの複数のファイルにCSVまたはORC形式で保存され、PolarStoreの対応するデータは自動的に削除されます。 これにより、保管スペースとコストが削減されます。
パーティションテーブルのコールドデータアーカイブ機能は、カナリアリリースにあります。 この機能を使用するには、Quota Centerに移動し、
polardb_mysql_hybrid_partition
quota IDに対応するクォータ名を見つけ、[操作] 列の [適用] をクリックします。コールドデータがアーカイブされた後、OSSのアーカイブされたテーブルは読み取り専用であり、クエリのパフォーマンスは低くなります。 シリアルクエリを使用する場合、インデックスのないアーカイブテーブルのクエリパフォーマンスは、InnoDBストレージエンジンのクエリパフォーマンスの約5分の1から10分の1になります。 データをアーカイブする前に、テストデータを使用して、クエリのパフォーマンスが要件を満たしているかどうかを確認することを推奨します。
CSVまたはORC形式でアーカイブされたコールドデータは、トランザクションには使用できません。
バックアップ操作を実行すると、OSSにアーカイブされたコールドデータはバックアップされません。 したがって、アーカイブされたコールドデータをバックアップから復元することはできません。
課金
コールドデータは、OSSの占有容量に基づいて課金されます。 次の課金ルールが使用されます。
中国本土内のリージョンの場合: GB時間あたり0.0000325米ドル。
中国本土以外のリージョンの場合: GB時間あたり0.0000455米ドル。
PolarDBストレージプランを購入すると、OSSのコールドデータのストレージコストを相殺できます。 PolarDBストレージプランの詳細については、「ストレージプラン」をご参照ください。
次の表に、PolarDBストレージプランのオフセットルールを示します。
リージョン | 充当比率 | 1 GB のストレージプランを使用して充当される OSS のストレージ使用量 |
中国本土のリージョン | 0.045 | 1 / 0.045 = 22.22 GB |
香港 (中国) および中国本土外のリージョン | 0.045 | 1 / 0.045 = 22.22 GB |
たとえば、容量が 100 GB のストレージプランを購入し、データストレージ使用量への充当後に 50 GB 残っていたとします。 クラスターのコールドデータは、中国本土内のリージョンで50 GBのOSSストレージスペースを消費します。 この場合、ストレージプランは自動的に2.25 GB (50/2) を使用してバックアップストレージの使用量を相殺し、ストレージプランには47.75 GBの容量が残っています。
ストレージプランの残り容量が、コードデータによって消費されたOSSストレージスペースを差し引くのに不十分な場合、従量課金制で追加のストレージスペースが課金されます。
OSSのコールドデータのストレージ使用状況を表示する方法については、「OSSにアーカイブされたコールドデータに関する情報の表示」をご参照ください。
課金の詳細については、「請求による消費量」をご参照ください。
サポートされているバージョン
CSVまたはORC形式でデータをアーカイブするには、Enterprise Editionのクラスターが次の要件を満たしている必要があります。
クラスターがcluster Editionの場合、次のいずれかのデータベースエンジンバージョンを実行する必要があります。
リビジョンバージョンが8.0.1.1.31以降のPolarDB for MySQL 8.0.1
リビジョンバージョンが8.0.2.2.9以降のPolarDB for MySQL 8.0.2
クラスターがマルチマスタークラスター (データベース /テーブル) エディションの場合、PolarDB for MySQL 8.0.1.0.13以降を実行する必要があります。
异なるファイル形式间の比较
コールドデータをアーカイブするときは、要件に基づいて適切なファイル形式を選択できます。
ファイル形式 | アーカイブ速度 | 読み取り速度 | オープンソース | ストレージ消費量 | アーカイブデータの変更方法 |
CSV | ORCフォーマットよりも高速です。 説明 シングルスレッドアーカイブのみがサポートされています。 | 行ストアノードのORCフォーマットよりも高速です。 説明 シングルスレッド読み取りとマルチスレッド読み取りがサポートされています。 | 必須 | InnoDBエンジンを使用し、インデックスを持たないテーブルが占有するストレージスペースと一致します。 | データを変更する前に、OSSテーブルからPolarStoreにデータをインポートする必要があります。 |
ORC | 遅い 説明 シングルスレッドアーカイブのみがサポートされています。 | 別の列ストアノードでの分析処理 (AP) クエリに適しています。 説明 シングルスレッド読み取りのみがサポートされています。 | 必須 | 同じデータボリュームの場合、ORCファイルはCSVファイルが占有するストレージスペースの45% を占有します。 |
使用状況
アーカイブコールドデータ
コールドデータをアーカイブするには、PolarDBコンソールにログインし、コールドデータアーカイブを有効にし、クラスターに接続してから、アーカイブ操作を実行します。
一般的なテーブルの場合、手動でコールドデータをCSVまたはORC形式でOSSにアーカイブできます。
パーティションテーブルの場合、コールドデータをCSVまたはORC形式でOSSに手動でアーカイブできます。 プライマリノードでDLMポリシーを作成して、コールドデータを自動的にアーカイブすることもできます。
アーカイブされたコールドデータの照会
コールドデータをアーカイブした後、次のいずれかの方法を使用して、アーカイブされたコールドデータを照会できます。
共通テーブル: ホットデータのクエリに使用するメソッドを使用します。 アクセスモードを変更する必要はありません。
パーティションテーブル: コールドデータのクエリ方法については、「ハイブリッドパーティションテーブルのデータのクエリ」をご参照ください。
1つのテーブルにアーカイブされたコールドデータは、複数のファイルに分散されます。 コールドデータのクエリを最適化するために、並列クエリを実行できます。 詳細については、「単一のOSS外部テーブルに対するマルチファイルクエリの実行」をご参照ください。
アーカイブされたコールドデータの変更
OSSにアーカイブされたコールドデータを変更する場合は、
ALTER ENGINE
ステートメントを実行して、OSSからPolarStoreにデータをインポートします。 データがPolarStoreにインポートされると、OSSのコールドデータは削除されます。 データを変更した後、変更したテーブルをOSSに再アーカイブできます。 詳細については、「OSSテーブルからPolarStoreへのデータのインポート」をご参照ください。アーカイブされたコールドデータの削除
アーカイブされたコールドデータを削除するには、
DROP TABLE
文を実行してアーカイブされたテーブルを削除し、CALL dbms_oss.delete_table_file('database_name', 'table_name');
文を実行してアーカイブされたコールドデータを削除します。
お問い合わせ
コールドデータのアーカイブ機能についてご質問がある場合は、DingTalkグループ24490017825に参加してください。 グループの専門家があなたの質問に答えることができます。 24/7サポートを提供するグループで、PolarDB for MySQLのチャットボットアシスタントを使用することもできます。