UNIX的なアレ

UNIX的なこととかいろいろ

mysql5.6から対応したInnoDB memcached pluginを使う

ついにMySQL5.6のGA版がリリースされました。今回のアップデートはかなり大幅な機能改修が入っていて、いろいろと試してみたいものがたくさんあります。

その中でも気になるのがInnodb memcached pluginです。少し前から話題にはなっていましたが、MySQLをmemcacheのプロトコルで操作することができるというアレです。

ものすごいパフォーマンスが出るというウワサのhandersocketという選択肢もありますが、標準でサポートされているという部分に今後の期待もできるので試してみました。

インストール

まず、MySQL5.6.10をビルドしてインストールします。今回の手順はCentOS5.8で試しています。

$ yum install -y gcc-c++ zlib-devel cmake ncurses-devel
$ test -d ~/src || mkdir ~/src && cd ~/src
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz/from/http://cdn.mysql.com/
$ tar xf mysql-5.6.10.tar.gz
$ cd mysql-5.6.10
$ cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.10 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=true \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_READLINE=OFF
$ make
$ sudo make install

とりあえずこれでインストール完了です。プラグインが入っているのかを確認します。

$ ls -l /usr/local/mysql-5.6.10/lib/plugin/libmemcached.so
-rwxr-xr-x 1 root root 585916  2月 15 22:03 /usr/local/mysql-5.6.10/lib/plugin/libmemcached.so

こんな感じで入っていれば成功です!

登録する

このままだとpluginとして登録されていないので、MySQLのプロンプトからpluginを登録します。

mysql> INSTALL PLUGIN daemon_memcached SONAME "libmemcached.so"
mysql> SHOW PLUGINS;
+----------------------------+----------+--------------------+-----------------+---------+
| Name                       | Status   | Type               | Library         | License |
+----------------------------+----------+--------------------+-----------------+---------+
| daemon_memcached           | ACTIVE   | DAEMON             | libmemcached.so | GPL     | 
+----------------------------+----------+--------------------+-----------------+---------+

いろいろ出てきますが、daemon_memcachedがインストールされていればOKです。

準備する

次は、必要なテーブルの準備をします。memcacheにはテーブルという概念がないわけですが、MySQLRDBMSのためdatabaseのなかにtableがあるという構造が原則となっています。

そこの辻褄をあわせる設定情報などが入っているdatabaseを作成する必要があります。

$ mysql -uroot -p < ~/src/mysql-5.6.10/plugin/innodb_memcached/innodb_memcache/scripts/innodb_memcached_config.sql
$ mysql -uroot -p
mysql> use innodb_memcache;
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_innodb_memcache |
+---------------------------+
| cache_policies            | 
| config_options            | 
| containers                | 
+---------------------------+

さてこんなテーブルができました。これで使えるハズです。使い方は詳しいブログがあるのでそちらを参考にするといいと思います!

ポートを変更したい!

デフォルトのポートは11211で上がるようになっていますが、memcachedとバッティングしてしまうのでアレなことが起きてしまう可能性もあるかもしれません。そんな時はポートを変更して使いましょう。

my.cnfに以下の設定をいれるとポートを変更できます。

daemon_memcached_option='-p 11222'

その他にもいろいろと設定を入れたいときはこのあたりを読むとよさそうです。 MySQL :: MySQL 5.6 Reference Manual :: 14.2.6 InnoDB Startup Options and System Variables