Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  InnoDB memcached プラグインのインストールおよび構成

14.18.3.2 InnoDB memcached プラグインのインストールおよび構成

必須テーブルのセットアップ

InnoDB テーブルと対話できるように memcached プラグインを構成するには、innodb_memcached_config.sql 構成スクリプトを実行して、バックグラウンドで使用される必要なテーブルをインストールします。

mysql> source MYSQL_HOME/share/innodb_memcached_config.sql

これは 1 回かぎりの操作です。あとで memcached サポートを無効化してから再度有効化した場合、テーブルはそのまま残ります。これらのテーブルのレイアウトと目的については、セクション14.18.7「InnoDB memcached プラグインの内部構造」を参照してください。

デーモンプラグインのインストール

デーモンプラグインをアクティブ化するには、ほかの MySQL プラグインをインストールする場合と同様に、install plugin ステートメントを使用します。

mysql> install plugin daemon_memcached soname "libmemcached.so";

プラグインがこのようにインストールされると、プラグインは MySQL Server がブートまたは再起動されるたびに自動的にアクティブ化されます。

デーモンプラグインの無効化

プラグイン構成に大きな変更を行う場合、プラグインをオフにすることが必要な場合があります。これを実行するには、次のステートメントを発行します。

mysql> uninstall plugin daemon_memcached;

これをふたたび有効にするには、前述の install plugin ステートメントを発行します。プラグインがこの方法で再起動される場合、以前のすべての構成設定、内部テーブル、およびデータが保持されます。

プラグインの有効化および無効化についてのその他の情報は、セクション5.1.8.1「プラグインのインストールおよびアンインストール」を参照してください。

memcached 構成オプションの指定

memcached に固有の構成パラメータがある場合、それらを mysqld コマンド行に指定するか、MySQL 構成ファイルに入力し、daemon_memcached_option MySQL 構成オプションに対する引数としてエンコードします。memcached 構成オプションは、MySQL Server が開始されるたびに実行されるプラグインのインストール時に有効になります。

たとえば、memcached がデフォルトポート 11211 ではなくポート 11222 をリッスンするするようにする場合、MySQL 構成オプション daemon_memcached_option-p11222 を追加します。

mysqld .... --daemon_memcached_option="-p11222"

daemon_memcached_option 文字列に、ほかの memcached コマンド行オプションを追加できます。ほかの構成オプションは次のとおりです。

  • daemon_memcached_engine_lib_name (デフォルトは innodb_engine.so)

  • daemon_memcached_engine_lib_path (デフォルトは NULL、プラグインディレクトリを表す)。

  • daemon_memcached_r_batch_size、読み取り操作 (get) のバッチコミットサイズ。これは memcached の読み取り操作を何回実行したあとにシステムが自動的にコミットを実行するかを指定します。デフォルトでは、これは 1 に設定されるため、memcached または SQL によってデータが更新されたかどうかに関係なく、すべての get リクエストは InnoDB テーブル内のコミット済みの最新データにアクセスできます。この値が 1 より大きい場合、読み取り操作のカウンタは get 呼び出しのたびに増分されます。flush_all 呼び出しは、読み取りおよび書き込みカウンタを両方ともリセットします。

  • daemon_memcached_w_batch_size、すべての書き込み操作 (setreplaceappendprependincrdecr など) のバッチコミット。デフォルトでは、これは 1 に設定されるため、機能停止時にコミット済みでないデータは失われず、基礎テーブルへのすべての SQL クエリーは最新のデータにアクセスできます。この値が 1 より大きいとき、書き込み操作のカウンタは、すべての addsetincrdecr、および delete 呼び出しのたびに 1 回増分されます。flush_all 呼び出しは、読み取りおよび書き込みカウンタを両方ともリセットします。

デフォルトでは、最初の 2 つの構成オプションを変更する必要はありません。これらのオプションによって、memcached のために別のストレージエンジン (NDB memcached エンジンなど) をロードできます。

繰り返しになりますが、これらの構成パラメータは、MySQL 構成ファイルまたは MySQL ブートコマンド行で指定します。これらは、memcached プラグインをロードしたときに有効になります。

サマリー

これで、すべてセットアップできました。memcached インタフェースを介して InnoDB テーブルと直接対話できます。この機能が正常に動作していることを検証するには、セクション14.18.3.3「InnoDB および memcached 設定の検証」を参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by Alexander Panyutin on April 23, 2015
Please add the manual page about enabling memcached with InnoDB under SELinux.

If you use SELinux ( run "getenforce" if it is answer Enforcing - then - you will ) and in /var/log/mysqld.log you'll see
--
bind(): Permission denied
failed to listen on TCP/UDP port 11222: Permission denied
--
Then do the following.

1. If you use non standart port ( not 11211, means other memcached for mySQL on the same server with other memcached ) you need allow this port
sudo semanage port -a -t memcache_port_t -p udp 11222
sudo semanage port -a -t memcache_port_t -p tcp 11222
From now - it is allowed to run/connect memcached on this port

2. Second - SELinux don't allow to run memcached from mysqld service. Do the following.

2.1. Make a -te file with following content ( for example we name it MySQL-InnoDB-Memcached.te )

module audit 1.0;

require {
type memcache_port_t;
type mysqld_t;
class tcp_socket name_bind;
}

#============= mysqld_t ==============
allow mysqld_t memcache_port_t:tcp_socket name_bind;

require {
type memcache_port_t;
type mysqld_t;
class udp_socket name_bind;
}

#============= mysqld_t ==============
allow mysqld_t memcache_port_t:udp_socket name_bind;

2.2. Now prepare this for SELinux
2.2.1. Check and build
checkmodule -M -m -o MySQL-InnoDB-Memcached.mod MySQL-InnoDB-Memcached.te
2.2.2. Pack
semodule_package -o MySQL-InnoDB-Memcached.pp -m MySQL-InnoDB-Memcached.mod
2.2.3. Load
semodule -i MySQL-InnoDB-Memcached.pp

3. Now you can restart your mysqld.
service mysqld restart.
Sign Up Login You must be logged in to post a comment.