メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

MySQL MEMCACHED のサポート

Amazon RDS は、MySQL 5.6 で導入された InnoDB テーブルに対する memcached インターフェイスの使用をサポートしています。memcached API を使用すると、NoSQL キー/値データストアと似た方法でアプリケーションが InnoDB テーブルを使用することができます。

memcached はシンプルな、キーベースのキャッシュです。アプリケーションは memcached を使用して、キャッシュにあるキーと値のデータペアの挿入、操作、取得を実行します。MySQL 5.6 では、memcached プロトコルによって InnoDB テーブルのデータを公開するデーモンサービスを実装するプラグインが導入されました。MySQL memcached プラグインの詳細については、「InnoDB と memcached との統合」を参照してください。

Amazon RDS MySQL 5.6 以降のインスタンスの memcached サポートは、以下の手順で有効にします。

  1. memcached インターフェイスへのアクセスを制御するために使用するセキュリティグループを決定します。既に SQL インターフェイスを使用しているアプリケーションセットが memcached インターフェイスにアクセスするアプリケーションセットと同じ場合、SQL インターフェイスで使用されている既存の VPC または DB セキュリティグループを使用できます。異なるアプリケーションセットが memcached インターフェイスにアクセスする場合は、新しい VPC または DB セキュリティグループを定義します。セキュリティグループの管理方法の詳細については、「Amazon RDS セキュリティグループ」を参照してください。

  2. カスタム DB オプショングループを作成し、エンジンタイプとして MySQL、バージョンとして 5.6 以降を選択します。オプショングループの作成方法の詳細については、「オプショングループを作成する」を参照してください。

  3. オプショングループに MEMCACHED オプションを追加します。memcached インターフェイスで使用するポート、および、インターフェイスへのアクセスを制御するために使用するセキュリティグループを指定します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。

  4. 必要に応じてオプション設定を変更して、memcached パラメータを設定します。オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。

  5. インスタンスにオプショングループを適用します。オプショングループを適用すると、Amazon RDS でそのインスタンスの memcached サポートが有効になります。

  6. memcached インターフェイスを介して MySQL テーブルのどの列にアクセスできるかを指定します。memcached プラグインは、innodb_memcache という専用データベースに containers というカタログテーブルを作成します。containers テーブルに行を挿入して InnoDB テーブルをマッピングし、memcached を介してアクセスします。memcached キー値を格納する InnoDB テーブルの列を 1 つ指定し、キーに関連付けられたデータ値を格納する列を 1 つ以上指定します。また、memcached アプリケーションがその列セットを参照するときに使用する名前も指定します。containers テーブルに行を挿入する方法の詳細については、「Internals of the InnoDB memcached Plugin」を参照してください。InnoDB テーブルのマッピングと、memcached を介したアクセスの例については、「InnoDB + memcached アプリケーションのテーブルおよび列のマッピングの指定」を参照してください。

  7. memcached インターフェイスにアクセスするアプリケーションが、SQL インターフェイスを使用するアプリケーションとは異なるコンピュータまたは EC2 インスタンス上にある場合は、MySQL インスタンスに関連付けられた VPC または DB セキュリティグループに、そのコンピュータの接続情報を追加します。セキュリティグループの管理方法の詳細については、「Amazon RDS セキュリティグループ」を参照してください。

インスタンスの memcached サポートを無効にするには、インスタンスを変更して MySQL バージョンのデフォルトオプショングループを指定します。MySQL インスタンスの変更方法の詳細については、「MySQL データベースエンジンを実行する DB インスタンスの変更」を参照してください。

MySQL memcached のセキュリティ上の考慮事項

memcached プロトコルはユーザー認証をサポートしていません。MySQL memcached のセキュリティ上の考慮事項について、詳しくは「memcached デプロイメント」および「MySQL キャッシュ Layer としての memcached の使用」を参照してください。

以下の対策をとると、memcached インターフェイスのセキュリティを高めることができます。

  • MEMCACHED オプションをオプショングループに追加するときに、デフォルトの 11211 とは異なるポートを指定します。

  • 既知の信頼されたクライアントアドレスまたは EC2 インスタンスのみにアクセスを制限する VPC または DB セキュリティグループに、memcached インターフェイスを関連付けます。セキュリティグループの管理方法の詳細については、「Amazon RDS セキュリティグループ」を参照してください。

MySQL memcached の接続情報

memcached インターフェイスにアクセスするには、アプリケーションで Amazon RDS インスタンスの DNS 名と memcached ポート番号の両方を指定する必要があります。たとえば、インスタンスの DNS 名が my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com で、memcached インターフェイスがポート 11212 を使用している場合、PHP で指定する接続情報は次のようになります。

Copy
<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>

Amazon RDS MySQL インスタンスの DNS 名と memcached ポートを確認するには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. AWS マネジメントコンソールの右上隅で、DB インスタンスを含むリージョンを選択します。

  3. ナビゲーションペインの [Instances] をクリックします。

  4. MySQL データベースエンジンを実行する DB インスタンス名の左側にある矢印を選択します。説明が表示されます。[endpoint] フィールドの値を書き留めます。DNS 名は、エンドポイントのコロン (:) までの部分です。コロンとその後のポート番号は無視します。このポートは memcached インターフェイスにアクセスする際には使用されません。

  5. [Option Group(s)] フィールドに表示された名前を書き留めます。

  6. ナビゲーションペインで、[Option Groups] をクリックします。

  7. MySQL DB インスタンスで使用するオプショングループ名の左側にある矢印を選択します。説明が表示されます。[MEMCACHED] オプションの [port] 設定の値を書き留めます。

MySQL memcached のオプション設定

Amazon RDS は、MySQL memcached パラメータを Amazon RDS MEMCACHED オプションのオプション設定として公開します。

MySQL memcached のパラメータ

  • DAEMON_MEMCACHED_R_BATCH_SIZEmemcached - COMMIT を実行して新しいトランザクションを開始する前に実行する読み取り操作 (get) の回数を指定する整数値。指定できる値は 1〜4294967295 で、デフォルトは 1 です。このオプションは、インスタンスが再開されるまで有効になりません。

  • DAEMON_MEMCACHED_W_BATCH_SIZEmemcached - COMMIT を実行して新しいトランザクションを開始する前に実行する書き込み操作 (add、set、incr など) の回数を指定する整数値。指定できる値は 1〜4294967295 で、デフォルトは 1 です。このオプションは、インスタンスが再開されるまで有効になりません。

  • INNODB_API_BK_COMMIT_INTERVALmemcached - InnoDB インターフェイスを使用するアイドル状態の接続を自動コミットする頻度を指定する整数値。指定できる値は 1〜1073741824 で、デフォルトは 5 です。このオプションは即座に反映され、インスタンスを再開する必要はありません。

  • INNODB_API_DISABLE_ROWLOCKmemcached - InnoDB インターフェイスを使用しているときに行ロックの使用を無効 (1 (true) ) または有効 (0 (false) ) にするブール値。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。

  • INNODB_API_ENABLE_MDLmemcached - ブール値。0 (false) に設定すると、InnoDB プラグインで使用するテーブルがロックされ、SQL インターフェイスを介して DDL によってそのテーブルを削除または変更できなくなります。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。

  • INNODB_API_TRX_LEVELmemcached - インターフェイスで処理されるクエリのトランザクション分離レベルを指定する整数値。指定できる値は 0〜3 です。デフォルトは 0 です。このオプションは、インスタンスが再開されるまで有効になりません。

次の MySQL memcached のパラメータは Amazon RDS によって設定され、ユーザーが変更することはできません: DAEMON_MEMCACHED_LIB_NAMEDAEMON_MEMCACHED_LIB_PATHINNODB_API_ENABLE_BINLOG。MySQL 管理者が daemon_memcached_options を使用して設定したパラメータは、Amazon RDS の個々の MEMCACHED オプション設定として使用できます。

MySQL daemon_memcached_options のパラメータ

  • BINDING_PROTOCOL - 使用するバインディングプロトコルを指定する文字列。指定できる値は、autoascii、または binary です。デフォルトは auto で、サーバーが自動的にクライアントとプロトコルを交渉します。このオプションは、インスタンスが再開されるまで有効になりません。

  • BACKLOG_QUEUE_LIMIT - memcached による処理待ちが可能なネットワーク接続の数を指定する整数値。この値を増やすと、クライアントが memcached インスタンスに接続できないというエラーの発生回数が減る可能性がありますが、サーバーのパフォーマンスは向上しません。指定できる値は 1〜2048 で、デフォルトは 1024 です。このオプションは、インスタンスが再開されるまで有効になりません。

  • CAS_DISABLED - 比較と交換 (CAS: compare and swap) の使用を有効 (1 (true) ) または無効 (0 (false) ) にするブール値。項目ごとのサイズが 8 バイトずつ小さくなります。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。

  • CHUNK_SIZE - 最小項目のキー、値、およびフラグに割り当てる最小のチャンクサイズ (バイト単位) を指定する整数値。指定できる値は 1〜48 です。デフォルトは 48 で、値を小さくするとメモリ効率が大幅に向上します。このオプションは、インスタンスが再開されるまで有効になりません。

  • CHUNCK_SIZE_GROWTH_FACTOR - 新しいチャンクのサイズを制御する浮動小数点値。新しいチャンクのサイズは、前のチャンクのサイズに CHUNCK_SIZE_GROWTH_FACTOR を掛けた値です。指定できる値は 1〜2 の範囲で、デフォルトは 1.25 です。このオプションは、インスタンスが再開されるまで有効になりません。

  • ERROR_ON_MEMORY_EXHAUSTED - ブール値。1 (true) に設定すると、項目を格納するメモリーが不足した場合に、memcached が項目を削除するのではなく、エラーを返します。0 (false) に設定した場合、メモリ不足になると memcached は項目を削除します。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。

  • MAX_SIMULTANEOUS_CONNECTIONS - 同時接続の最大数を指定する整数値。この値を 10 未満に設定すると、MySQL は起動できなくなります。指定できる値は 10〜1024 で、デフォルトは 1024 です。このオプションは、インスタンスが再開されるまで有効になりません。

  • VERBOSITYmemcached - サービスが MySQL エラーログに記録する情報のレベルを指定する文字列。デフォルトは v です。このオプションは、インスタンスが再開されるまで有効になりません。指定できる値は次のとおりです。

    • v - メインイベントループの実行中に発生したエラーと警告を記録します。

    • vv - v で記録する情報に加えて、各クライアントのコマンドとレスポンスも記録します。

    • vvv - vv で記録する情報に加えて、内部の状態遷移も記録します。

これらの MySQL DAEMON_MEMCACHED_OPTIONS のパラメータは Amazon RDS によって設定され、ユーザーが変更することはできません: DAEMON_PROCESSLARGE_MEMORY_PAGESMAXIMUM_CORE_FILE_LIMITMAX_ITEM_SIZELOCK_DOWN_PAGE_MEMORYMASKIDFILEREQUESTS_PER_EVENTSOCKETUSER