ApsaraDB RDS for MySQL インスタンス内のデータ量が増加すると、ストレージコストも増加します。アクセス頻度の低いデータ (コールドデータ) を Object Storage Service (OSS) にアーカイブすることで、ストレージコストを大幅に削減できます。
仕組み
Premium ESSD を使用する ApsaraDB RDS for MySQL インスタンスでデータアーカイブ機能を有効にすると、DDL ステートメントを実行して、Premium ESSD と OSS 間でデータを移動できます。この機能により、大規模でアクセス頻度の低いテーブルを OSS にアーカイブし、InnoDB のネイティブなアクセス方法を使用してデータを読み取ることができます。次の DDL ステートメントがサポートされています。
テーブルをアーカイブする
ALTER TABLE $table_name ENGINE_ATTRIBUTE='{"OSS":"Y"}';説明ApsaraDB RDS for MySQL では、テーブル全体を OSS にアーカイブできます。テーブルがアーカイブされると、読み取り専用になります。実行できるのは、SELECT、DROP TABLE、DROP DATABASE、RENAME 操作のみです。
テーブルを取得する
ALTER TABLE $table_name ENGINE_ATTRIBUTE='{"OSS":"N"}';
ApsaraDB RDS for MySQL でアーカイブされたテーブルは、完全な InnoDB インデックス情報とトランザクション特性を保持します。これにより、高速なオフセットクエリとキャッシュアクセラレーションが可能になり、コールドテーブルへのアクセス効率が大幅に向上します。
メリット
OSS の大容量、高セキュリティ、低コスト、高信頼性を活用することで、データアーカイブ機能は、ApsaraDB RDS for MySQL インスタンスにデータを保存するための費用対効果の高いソリューションを提供します。完全な InnoDB トランザクション機能を保持しながら、アクセス頻度の低いデータへのアクセスを可能にします。これにより、Premium ESSD PL1 ディスクの使用と比較して、ストレージコストを最大 80% 削減できます。
クエリパフォーマンスを向上させるには、バッファープール拡張 (BPE) 機能を有効化できます。
前提条件
エンジン:ApsaraDB RDS for MySQL
製品タイプ:Standard および Yitian
ストレージタイプ:Premium ESSD
説明インスタンスが Premium ESSD を使用していない場合は、ストレージタイプを Premium ESSD に変更できます。
Premium Local SSD または標準 SSD から Premium ESSD にストレージタイプを変更することはできません。
課金方法:従量課金およびサブスクリプション
エンジンバージョン:MySQL 8.0 (マイナーエンジンバージョン 20240131 以降)
エディション:RDS Basic Edition、RDS High-availability Edition、RDS Cluster Edition
利用できないリージョン:タイ (バンコク)、韓国 (ソウル)、英国 (ロンドン)、UAE (ドバイ)
課金
パブリックプレビュー期間中は無料
2024 年 6 月 20 日から 2024 年 7 月 25 日までのパブリックプレビュー期間中は、この機能を無料で使用できます。パブリックプレビュー期間終了後は、OSS にアーカイブされたデータ量に基づいて課金されます。
課金の詳細
この機能は従量課金方式のみをサポートしています。次の表に、RDS エディションとリージョンごとの料金を示します。
リージョン | Basic Edition 料金 | High-availability Edition 料金 | Cluster Edition 料金 (ノードあたり) |
中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深セン)、中国 (河源)、中国 (広州)、中国 (成都) | 0.000032 米ドル/GB-時間 | 0.000065 米ドル/GB-時間 | 0.000032 米ドル/GB-時間 |
中国 (香港) | 0.000034 米ドル/GB-時間 | 0.000068 米ドル/GB-時間 | 0.000034 米ドル/GB-時間 |
フィリピン (マニラ)、米国 (シリコンバレー) | 0.000058 米ドル/GB-時間 | 0.000117 米ドル/GB-時間 | 0.000058 米ドル/GB-時間 |
日本 (東京)、シンガポール、インドネシア (ジャカルタ)、ドイツ (フランクフルト) | 0.000034 米ドル/GB-時間 | 0.000068 米ドル/GB-時間 | 0.000034 米ドル/GB-時間 |
マレーシア (クアラルンプール) | 0.000057 米ドル/GB-時間 | 0.000114 米ドル/GB-時間 | 0.000057 米ドル/GB-時間 |
米国 (バージニア) | 0.000054 米ドル/GB-時間 | 0.000108 米ドル/GB-時間 | 0.000054 米ドル/GB-時間 |
利用できないリージョン:タイ (バンコク)、韓国 (ソウル)、英国 (ロンドン)、UAE (ドバイ)
制限事項
データアーカイブ機能は、サーバーレス ApsaraDB RDS for MySQL インスタンスでは使用できません。
OSS に保存されているテーブルは読み取り専用であり、SELECT、DROP TABLE、DROP DATABASE、RENAME 操作のみをサポートします。テーブルを Premium ESSD に取得すると、すべての操作が可能になります。
パーティションテーブル、全文検索インデックスを持つテーブル、暗号化されたテーブル、外部キーを持つテーブル、トリガーを持つテーブル、または圧縮されたテーブル (テーブル圧縮とページ圧縮を含む) を OSS にアーカイブすることはできません。
OSS のアクセスレイテンシーにより、OSS に保存されているコールドテーブルのクエリは、Premium ESSD 上のテーブルのクエリと比較して、レイテンシーが約 10 ミリ秒増加する可能性があります。
アーカイブするテーブルは、少なくとも 6 MB である必要があります。
アーカイブ DDL ステートメントの実行時間は、テーブルサイズによって異なります。実行中、テーブルは読み取り可能ですが、書き込みはできません。
データアーカイブを有効にすると、次の表に示すように、インスタンスのバックアップおよびその他の機能に影響します。
サポートされていない機能
説明
秒単位のバックアップ
秒単位のバックアップを使用するには、まずデータアーカイブ機能を無効にする必要があります。
データアーカイブ機能を有効にする前に、秒単位のバックアップが無効になっていることを確認する必要があります。
リージョン間バックアップ
リージョン間バックアップを使用するには、まずデータアーカイブ機能を無効にする必要があります。
データアーカイブ機能を有効にする前に、リージョン間バックアップが無効になっていることを確認する必要があります。
個別データベースおよびテーブルの復元
データベースを復元する場合、そのデータベース内のアーカイブされていないデータのみを復元できます。
バックアップセットのダウンロード
ダウンロードされたバックアップセットには、アーカイブされていないデータのみが含まれます。
説明データアーカイブが有効になっているインスタンスの場合、システムがアーカイブされたデータを取得して復元する必要があるため、バックアップおよび復元操作に時間がかかります。
注意事項
OSS へのデータのアーカイブと OSS からのアーカイブされたデータの読み取りは、メモリを消費します。ワークロードに基づいて、データ変換とデータアクセスの速度と頻度を調整する必要があります。
データアーカイブの有効化と無効化
インスタンスページに移動し、上部メニューでリージョンを選択してから、対象インスタンスの ID をクリックします。インスタンスは、データアーカイブの前提条件を満たしている必要があります。
インスタンス詳細ページで、[Premium ESSD] の右にある [Premium ESSD の設定] をクリックし、次に [データアーカイブ] スイッチを切り替えます。
重要データアーカイブ機能を有効または無効にすると、プライマリ/スタンバイ切り替えが発生し、約 30 秒間の一時的な中断が発生します。この操作はオフピーク時に実行し、アプリケーションに自動再接続メカニズムがあることを確認してください。
データアーカイブ機能を無効にするには、OSS にアーカイブされたテーブルが存在しないことを確認する必要があります。OSS にアーカイブされたテーブルがある場合は、機能を無効にする前に、DDL ステートメントを実行してテーブルを Premium ESSD に取得するか、削除する必要があります。
アーカイブされたデータの表示
マイナーエンジンバージョンが 20241130 以降の ApsaraDB RDS for MySQL 8.0 インスタンスでは、information_schema.innodb_tablespaces_oss を直接クエリして、テーブルスペース情報をより効率的に取得できます。
-- 20241130 より前のバージョンを実行している ApsaraDB RDS for MySQL インスタンスの場合
SELECT t.NAME AS tablespace_name, SUBSTRING_INDEX(t.NAME, '/', 1) AS database_name, SUBSTRING_INDEX(t.NAME, '/', -1) AS table_name, oss.OSS_OBJECT_NUM * oss.OSS_OBJECT_SIZE AS SIZE_IN_OSS_BYTES FROM information_schema.innodb_tables AS t JOIN information_schema.innodb_tablespaces_oss AS oss ON t.space = oss.space;
-- バージョン 20241130 以降を実行している ApsaraDB RDS for MySQL インスタンスの場合
SELECT NAME AS tablespace_name, SUBSTRING_INDEX(NAME, '/', 1) AS database_name, SUBSTRING_INDEX(NAME, '/', -1) AS table_name, OSS_PART_SIZE AS SIZE_IN_OSS_BYTES FROM information_schema.innodb_tablespaces_oss;関連ドキュメント
データアーカイブ機能には、ビジネス要件に基づいて変更できるいくつかのパラメータがあります。詳細については、「RDS MySQL 8.0 で使用可能なパラメータのリスト」をご参照ください。
パラメータ | デフォルト | 説明 |
innodb_oss_ddl_threads | 16 |
|
innodb_oss_files_limit | 10240 |
|
innodb_oss_prefetch | ON |
|
innodb_oss_prefetch_linear_pct_threshold | 10% |
|
innodb_oss_prefetch_random_pct_threshold | 30% |
|
innodb_oss_prefetch_task_limit | 32 |
|
oss_max_connections | 64 |
|
よくある質問
Q: MySQL で DDL コマンドを実行すると、エラー [OSS] Size of tables is less than 6291456 が発生するのはなぜですか?
A: アーカイブするテーブルは、少なくとも 6 MB である必要があります。
Q: ApsaraDB RDS for MySQL インスタンスのプライマリインスタンスでデータアーカイブを有効にした場合、関連する読み取り専用インスタンスで追加の操作が必要ですか?
A: いいえ。プライマリインスタンスでデータアーカイブを有効にすると、読み取り専用インスタンスは自動的にデータアーカイブ機能を同期し、アーカイブされたテーブルスペースを解放します。追加の操作は必要ありません。