MySQL の memcached サポート
Amazon RDS は、MySQL 5.6 で導入された InnoDB テーブルに対する memcached
インターフェイスの使用をサポートしています。memcached
API を使用すると、NoSQL キー/値データストアと似た方法でアプリケーションが InnoDB テーブルを使用することができます。
memcached
インターフェイスは、シンプルなキーベースのキャッシュです。アプリケーションは memcached
を使用して、キャッシュにあるキーと値のデータペアの挿入、操作、取得を実行します。MySQL 5.6 では、memcached
プロトコルによって InnoDB テーブルのデータを発行するデーモンサービスを実装するプラグインが導入されました。MySQL memcached
プラグインの詳細については、「InnoDB と memcached の統合
RDS for MySQL DB インスタンスの memcached サポートを有効にするには
-
memcached
インターフェイスへのアクセスを制御するために使用するセキュリティグループを決定します。既に SQL インターフェイスを使用しているアプリケーションセットがmemcached
インターフェイスにアクセスするアプリケーションセットと同じ場合、SQL インターフェイスで使用されている既存の VPC セキュリティグループを使用できます。異なるアプリケーションセットがmemcached
インターフェイスにアクセスする場合は、新しい VPC または DB セキュリティグループを定義します。セキュリティグループの管理方法の詳細については、「セキュリティグループによるアクセス制御」を参照してください。 -
カスタム DB オプショングループを作成し、エンジンタイプとバージョンとして MySQL を選択します。オプショングループの作成方法の詳細については、「オプショングループを作成する」を参照してください。
-
オプショングループに [
MEMCACHED
] オプションを追加します。memcached
インターフェイスで使用するポート、および、インターフェイスへのアクセスを制御するために使用するセキュリティグループを指定します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。 -
必要に応じて、オプション設定を変更し、
memcached
パラメータを設定します。オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。 -
インスタンスにオプショングループを適用します。オプショングループが適用された場合、Amazon RDS では、そのインスタンスの
memcached
サポートが有効になります。インスタンスを起動するときにカスタムオプショングループを指定して、新しいインスタンスの
memcached
サポートを有効にします。MySQL インスタンスの起動方法の詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。インスタンスを変更するときにカスタムオプショングループを指定して、既存のインスタンスの
memcached
サポートを有効にします。DB インスタンスの変更の詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
memcached
インターフェイスを介して MySQL テーブル内のアクセス可能な列を指定します。memcached
プラグインは、containers
という専用データベースにinnodb_memcache
というカタログテーブルを作成します。containers
テーブルに行を挿入して InnoDB テーブルをマッピングし、memcached
を介してアクセスします。memcached
キー値を格納する InnoDB テーブルの列を 1 つ指定し、キーに関連付けられたデータ値を格納する列を 1 つ以上指定します。また、memcached
アプリケーションがその列セットを参照するときに使用する名前も指定します。containers
テーブルに行を挿入する方法の詳細については、「InnoDB memcached プラグインの内部構造」を参照してください。InnoDB テーブルをマッピングし、 memcached
を介してアクセスする例については、「InnoDB memcached プラグインの書き込みアプリケーション」を参照してください。 -
memcached
インターフェイスにアクセスするアプリケーションが、SQL インターフェイスを使用するアプリケーションとは異なるコンピュータまたは EC2 インスタンス上にある場合は、MySQL インスタンスに関連付けられた VPC セキュリティグループに、そのコンピュータの接続情報を追加します。セキュリティグループの管理方法の詳細については、「セキュリティグループによるアクセス制御」を参照してください。
インスタンスの memcached
サポートを無効にするには、インスタンスを変更して MySQL バージョンのデフォルトオプショングループを指定します。DB インスタンスの変更の詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
MySQL memcached のセキュリティ上の考慮事項
memcached
プロトコルはユーザー認証をサポートしていません。MySQL memcached
セキュリティ上の考慮事項の詳細については、MySQL ドキュメントの「InnoDB memcached プラグインのセキュリティ上の考慮事項
以下の対策をとると、memcached
インターフェイスのセキュリティを高めることができます。
MEMCACHED
オプションをオプショングループに追加するときに、デフォルトの 11211 とは異なるポートを指定します。既知の信頼されたクライアントアドレスおよび EC2 インスタンスのみにアクセスを制限する VPC セキュリティグループに、
memcached
インターフェイスを関連付けます。セキュリティグループの管理方法の詳細については、「セキュリティグループによるアクセス制御」を参照してください。
MySQL memcached の接続情報
memcached
インターフェイスにアクセスするには、アプリケーションで Amazon RDS インスタンスの DNS 名と memcached
ポート番号の両方を指定する必要があります。例えば、インスタンスの DNS 名が my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com
で、memcached インターフェイスがポート 11212 を使用している場合、PHP で指定する接続情報は次のようになります。
<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>
MySQL DB インスタンスの DNS 名と memcached ポートを確認するには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 AWS Management Consoleの右上隅で、DB インスタンスを含むリージョンを選択します。
ナビゲーションペインで、[データベース] を選択します。
MySQL DB インスタンスの名前を選択して詳細を表示します。
[Connect] セクションで、[Endpoint] フィールドの値を書き留めます。DNS 名はエンドポイントと同じです。また、[Connect] セクションのポートは
memcached
インターフェイスへのアクセスには使用されないことにご注意ください。[Details] セクションで、[Option Group] フィールドにリストされた名前を書き留めます。
ナビゲーションペインで、[オプショングループ] を選択します。
MySQL DB インスタンスで使用するオプショングループの名前を選択して、オプショングループの詳細を表示します。[Options] セクションで、[MEMCACHED] オプションの [Port] 設定の値を書き留めます。
MySQL memcached のオプション設定
Amazon RDS は、MySQL memcached
パラメータを Amazon RDS MEMCACHED
オプションのオプション設定として公開します。
MySQL memcached のパラメータ
DAEMON_MEMCACHED_R_BATCH_SIZE
- COMMIT を実行して新しいトランザクションをスタートする前に実行するmemcached
読み取りオペレーション (get) の回数を指定する整数値。指定できる値は 1〜4294967295 で、デフォルトは 1 です。このオプションは、インスタンスが再開されるまで有効になりません。DAEMON_MEMCACHED_W_BATCH_SIZE
- COMMIT を実行して新しいトランザクションをスタートする前に実行するmemcached
書き込み操作 (add、set、incr など) の回数を指定する整数値。指定できる値は 1〜4294967295 で、デフォルトは 1 です。このオプションは、インスタンスが再開されるまで有効になりません。INNODB_API_BK_COMMIT_INTERVAL
- InnoDBmemcached
インターフェイスを使用するアイドル状態の接続を自動コミットする頻度を指定する整数値。指定できる値は 1〜1073741824 で、デフォルトは 5 です。このオプションは即座に反映され、インスタンスを再開する必要はありません。INNODB_API_DISABLE_ROWLOCK
- InnoDBmemcached
インターフェイスを使用しているときに行ロックの使用を無効 (1=true) または有効 (0=false) にするブール値。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。INNODB_API_ENABLE_MDL
- ブール値。0 (false) に設定すると、InnoDBmemcached
プラグインで使用するテーブルがロックされ、SQL インターフェイスを介して DDL によってそのテーブルを削除または変更できなくなります。デフォルトは 0 (false) です。このオプションは、インスタンスが再開されるまで有効になりません。INNODB_API_TRX_LEVEL
-memcached
インターフェイスで処理されるクエリのトランザクション分離レベルを指定する整数値。指定できる値は 0〜3 です。デフォルトは 0 です。このオプションは、インスタンスが再開されるまで有効になりません。
次の MySQL memcached
のパラメータは Amazon RDS によって設定され、ユーザーが変更することはできません: DAEMON_MEMCACHED_LIB_NAME
、DAEMON_MEMCACHED_LIB_PATH
、INNODB_API_ENABLE_BINLOG
。MySQL 管理者が daemon_memcached_options
を使用して設定したパラメータは、Amazon RDS の個々の MEMCACHED
オプション設定として使用できます。
MySQL daemon_memcached_options のパラメータ
BINDING_PROTOCOL
- 使用するバインディングプロトコルを指定する文字列。指定できる値は、auto
、ascii
、または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 で、値を小さくするとメモリ効率が大幅に向上します。このオプションは、インスタンスが再開されるまで有効になりません。CHUNK_SIZE_GROWTH_FACTOR
- 新しいチャンクのサイズを制御する浮動小数点値。新しいチャンクのサイズは、前のチャンクのサイズにCHUNK_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 です。このオプションは、インスタンスが再開されるまで有効になりません。VERBOSITY
-memcached
サービスが MySQL エラーログに記録する情報のレベルを指定する文字列。デフォルトは「v」です。このオプションは、インスタンスが再開されるまで有効になりません。指定できる値は次のとおりです。v
- メインイベントループの実行中に発生したエラーと警告を記録します。vv
- v で記録する情報に加えて、各クライアントのコマンドとレスポンスも記録します。vvv
- vv で記録する情報に加えて、内部の状態移行も記録します。
これらの MySQL DAEMON_MEMCACHED_OPTIONS
のパラメータは Amazon RDS によって設定され、ユーザーが変更することはできません: DAEMON_PROCESS
、LARGE_MEMORY_PAGES
、MAXIMUM_CORE_FILE_LIMIT
、MAX_ITEM_SIZE
、LOCK_DOWN_PAGE_MEMORY
、MASK
、IDFILE
、REQUESTS_PER_EVENT
、SOCKET
、USER
。