すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:データアーカイブ機能の使用

最終更新日:Jun 11, 2025

ApsaraDB RDS for MySQL インスタンスに大量のデータを保存すると、ストレージコストが増加します。ほとんどの場合、ビジネスデータはコールドデータとホットデータに分けられます。 コールドデータを Object Storage Service (OSS) バケットにアーカイブすることで、ストレージコストを大幅に削減できます。

機能の説明

RDS インスタンスの Premium Enterprise SSD (ESSD) のデータアーカイブ機能を有効にすると、DDL 文を実行して ESSD と OSS バケット間でデータを変換できます。 データアーカイブ機能を使用すると、アクセス頻度の低い大きなテーブルを OSS バケットに保存し、ネイティブの InnoDB アクセスメソッドを使用してテーブルからデータを読み取ることができます。 次の DDL 文がサポートされています。

  1. 次のステートメントを実行してデータを OSS にアーカイブできます。

    ALTER TABLE $table_name ENGINE_ATTRIBUTE='{"OSS":"Y"}';
    説明

    ApsaraDB RDS for MySQL では、テーブル内のすべてのデータを OSS バケットにアーカイブできます。 テーブルをアーカイブした後、テーブルにデータを書き込むことはできなくなります。 テーブルに対して SELECT、DROP TABLE、DROP DATABASE、および RENAME 操作を実行できます。

  2. 次の文を実行して、アーカイブされたデータを Premium ESSD に移動できます。

    ALTER TABLE $table_name ENGINE_ATTRIBUTE='{"OSS":"N"}';

ApsaraDB RDS for MySQL では、アーカイブされたテーブルは完全な InnoDB インデックスを保持し、トランザクションに対応しています。 これにより、アーカイブされたテーブルのオフセットクエリとキャッシュアクセラレーションが可能になり、コールドテーブルへのアクセスの効率が向上します。

メリット

データアーカイブ機能を有効にすると、OSS のマスストレージ、セキュリティ、費用対効果、高信頼性に基づいて、RDS インスタンスのデータを低コストで OSS バケットに保存できます。 データアーカイブ機能を使用すると、InnoDB トランザクション機能を保持し、アクセス頻度の低いデータを読み取ることができます。 データアーカイブ機能を有効にすると、ストレージコストはパフォーマンスレベル 1 (PL1) の ESSD を使用する場合のストレージコストよりも 80% 低くなります。

説明

クエリのパフォーマンスを向上させるには、I/O アクセラレーション機能を有効にすることができます。 詳細については、「汎用 ESSD の I/O アクセラレーション機能を使用する」をご参照ください。

適用範囲

  • エンジン: MySQL

  • 製品タイプ: standard および YiTian

  • ストレージタイプ: Premium ESSD

    説明
  • バージョン: マイナーエンジンバージョン 20240131 以後の MySQL 8.0

  • エディション: RDS Basic Edition、RDS High-availability Edition、および RDS Cluster Edition

  • 利用できないリージョン: 韓国 (ソウル)、英国 (ロンドン)

課金ルール

パブリックプレビュー中は無料

During the public preview, which starts from June 20, 2024 to July 25, 2024, you can use the feature free of charge. After the public preview ends, you are charged based on the volume of data that is archived to the OSS bucket.

課金

従量課金方式のみがサポートされています。次の表は、異なる RDS エディションを実行する RDS インスタンスの機能の価格について説明しています。

リージョン

RDS Basic Edition

RDS High-availability Edition

RDS Cluster Edition(ノード数に基づいて計算)

中国(杭州)、中国(上海)、中国(青島)、中国(北京)、中国(張家口)、中国(フフホト)、中国(ウランチャブ)、中国(深セン)、中国(河源)、中国(広州)、中国(成都)

1 GB 時間あたり 0.000032 米ドル

1 GB 時間あたり 0.000065 米ドル

1 GB 時間あたり 0.000032 米ドル

中国(香港)

1 GB 時間あたり 0.000034 米ドル

1 GB 時間あたり 0.000068 米ドル

1 GB 時間あたり 0.000034 米ドル

フィリピン(マニラ)、米国(シリコンバレー)

1 GB 時間あたり 0.000058 米ドル

1 GB 時間あたり 0.000117 米ドル

1 GB 時間あたり 0.000058 米ドル

日本(東京)、シンガポール、インドネシア(ジャカルタ)、ドイツ(フランクフルト)

1 GB 時間あたり 0.000034 米ドル

1 GB 時間あたり 0.000068 米ドル

1 GB 時間あたり 0.000034 米ドル

マレーシア(クアラルンプール)

1 GB 時間あたり 0.000057 米ドル

1 GB 時間あたり 0.000114 米ドル

1 GB 時間あたり 0.000057 米ドル

米国(バージニア)

1 GB 時間あたり 0.000054 米ドル

1 GB 時間あたり 0.000108 米ドル

1 GB 時間あたり 0.000054 米ドル

説明

この機能は、タイ(バンコク)、韓国(ソウル)、英国(ロンドン)、UAE(ドバイ)の各リージョンではサポートされていません。

制限事項

  • RDS インスタンスでサーバーレス課金方式を使用している場合、RDS インスタンスのデータアーカイブ機能はサポートされていません。

  • OSS バケットに格納されているテーブルは、SELECT、DROP TABLE、DROP DATABASE、および RENAME 操作をサポートしています。 OSS バケットから ESSD にテーブルのデータを転送した後、テーブルはすべての操作をサポートします。

  • パーティションテーブル、フルテキストインデックスを含むテーブル、暗号化テーブル、外部キーを含むテーブル、および圧縮テーブルは、OSS バケットに格納できません。 テーブル圧縮とページ圧縮を使用するテーブルは、圧縮テーブルと見なされます。

  • OSS のアクセスレイテンシのため、OSS バケットのコールドテーブルのアクセスレイテンシは 10 ミリ秒に達し、これは ESSD のアクセスレイテンシよりも高くなります。

  • RDS インスタンスのアーカイブ済みテーブルのサイズは、6 MB 以上である必要があります。

  • データをアーカイブするために使用される DDL 文の実行時間は、アーカイブされるテーブルのサイズによって異なります。 これらの DDL 文の実行中は、テーブルからデータを読み取ることはできますが、テーブルにデータを書き込むことはできません。

  • データアーカイブ機能は、インスタンスのバックアップと RDS インスタンスの特定の機能に影響を与える可能性があります。 次の表は、影響を受ける機能を示しています。

    機能

    説明

    秒単位バックアップ

    • 1 桁秒バックアップ機能を有効にするには、データアーカイブ機能を無効にする必要があります。

    • データアーカイブ機能を有効にするには、秒単位バックアップ機能を無効にする必要があります。

    リージョン間バックアップ

    • リージョン間バックアップ機能を有効にするには、データアーカイブ機能を無効にする必要があります。

    • データアーカイブ機能を有効にするには、リージョン間バックアップ機能を無効にする必要があります。

    個々のデータベースとテーブルの復元

    データベースを復元する場合、データベース内でアーカイブされていないデータのみを復元できます。

    バックアップセットのダウンロード

    ダウンロードしたバックアップセットには、アーカイブされていないデータのみが含まれています。

    説明

    データアーカイブ機能を有効にすると、アーカイブされたデータを復元する必要があるため、インスタンスのバックアップまたは復元の速度が低下します。

使用上の注意

OSS ストレージと読み取り操作はメモリ リソースを消費します。データ変換とデータ アクセスの速度と頻度を変更する必要があります。

データアーカイブ機能の有効化と無効化

  1. ApsaraDB RDS コンソールにログインし、インスタンス ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。 RDS インスタンスがデータアーカイブ機能をサポートするリージョンに存在することを確認してください。

  2. 表示されるページで、[Premium ESSD] の横にある [Premium ESSD の構成] をクリックします。 表示されるダイアログボックスで、[データアーカイブ] 機能を有効または無効にします。

    重要
    • RDS インスタンスのデータアーカイブ機能を有効または無効にすると、インスタンスへの接続が約 30 秒間中断されます。

    • データアーカイブ機能を無効にする場合は、OSS バケットにアーカイブされたテーブルが含まれていないことを確認してください。 OSS バケットにアーカイブされたテーブルが含まれている場合、この機能を無効にすることはできません。 この場合、DDL 文を実行してアーカイブされたテーブルをオンラインテーブルに変換するか、アーカイブされたテーブルに対して DROP 操作を実行してから、データアーカイブ機能を無効にする必要があります。

アーカイブ済みデータの表示

  1. コンソールでアーカイブ済みデータを表示します。

    1. [インスタンス] ページに移動します。 上部のナビゲーションバーで、リージョンを選択します。 次に、データアーカイブ機能の要件を満たす RDS インスタンスの ID をクリックします。

    2. 左側のナビゲーションウィンドウで、[コールドストレージ管理] をクリックして、データアーカイブ機能が有効になっているデータベースを表示します。

  2. SQL 文を実行して、アーカイブ済みデータを表示します。

    RDS インスタンスで MySQL 8.0 20241130 以降を実行している場合は、より効率的な information_schema.innodb_tablespaces_oss から表領域情報を取得できます。

    -- MySQL 8.0 20241130 より前のエンジンバージョンを実行している RDS インスタンス用の文
    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;
    
    -- MySQL 8.0 20241130 以降を実行している RDS インスタンス用の文
    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;

参照資料

次の表に、データアーカイブ機能でサポートされているパラメーターを示します。ビジネス要件に基づいてパラメーター設定を変更できます。詳細については、「MySQL 8.0 を実行する ApsaraDB RDS インスタンスでサポートされているパラメーター」をご参照ください。

パラメーター

デフォルト値

説明

innodb_oss_ddl_threads

16

  • アーカイブデータ変換の同時スレッド数。

  • 帯域幅の上限に達する前に、パラメーター値を増やすことでアーカイブデータ変換を高速化できます。ただし、これによりメモリ消費量と帯域幅消費量が増加します。

innodb_oss_files_limit

10240

  • アーカイブデータのコントロールブロック数。コントロールブロックはメモリにキャッシュされます。

  • OSS バケットにデータをアーカイブすると、ESSD 内のテーブルはデータファイルブロックに分割され、OSS バケットにアップロードされます。各データファイルブロックの表領域とデータ範囲は、対応するコントロールブロックに格納されます。コントロールブロックはメモリに格納されます。コントロールブロックは、アーカイブデータによって要求されたオフセットをすばやく識別し、LRU アルゴリズムを使用してキャッシュ制御を実行するために使用されます。

innodb_oss_prefetch

ON

  • アーカイブデータをプリフェッチするかどうかを指定します。

  • このパラメーターを ON に設定すると、線形プリフェッチまたはランダムプリフェッチの要件が満たされた場合、OSS はすべてのアーカイブデータファイルブロックをバッファプールにキャッシュします。これにより、OSS へのアクセス頻度が減り、アクセス効率が向上します。

innodb_oss_prefetch_linear_pct_threshold

10%

  • アーカイブデータの線形プリフェッチしきい値。

  • アーカイブデータブロック内で順番に読み取られたページ数がしきい値に達すると、OSS はアーカイブデータファイルブロック全体をバッファプールに直接キャッシュします。

innodb_oss_prefetch_random_pct_threshold

30%

  • アーカイブデータのランダムプリフェッチしきい値。

  • アーカイブデータブロック内でランダムに読み取られたページ数がしきい値に達すると、OSS はアーカイブデータファイルブロック全体をバッファプールに直接キャッシュします。

innodb_oss_prefetch_task_limit

32

  • プリフェッチキャッシュタスクの上限。

  • アーカイブデータファイルブロックがバッファプールに完全にキャッシュされるまで、アーカイブデータファイルブロックを格納するために追加のメモリリソースが必要になります。値が大きいと、メモリ消費量が高くなる可能性があります。

oss_max_connections

64

  • RDS インスタンスが OSS バケットにアクセスするときに許可される HTTP 接続の最大数。

  • 高並列シナリオでは、値が大きいほど OSS バケットへのアクセスが高速になります。ただし、値が大きいと、CPU 消費量、メモリ消費量、および帯域幅消費量が高くなります。

よくある質問

RDS インスタンスで ALTER 文を実行すると、[OSS] Size of tables is less than 6291456 エラーメッセージが表示されるのはなぜですか?

RDS インスタンス上のアーカイブ済みテーブルのデータサイズは、6 MB より小さくすることはできません。