CentOS 5.2 MySQL 5.1.44にmycacheを入れてみる2
ソースのIPアドレスがうまく調整できないのでソースを見てみる。
- mycache.cc 496行目
thread_t::start_server(unsigned host, unsigned short port, int num_threads)
↓intを追加
thread_t::start_server(unsigned int host, unsigned short port, int num_threads)
- mycache.hh 182行目
182 static bool start_server(unsigned host, unsigned short port, int num_threads);
↓intを追加
182 static bool start_server(unsigned int host, unsigned short port, int num_threads);
バイト長が指定されてないのが原因?64bit環境であればうまくいく??とりあえずIPアドレスはlong指定しておいて問題ないのでlongを指定。unsined intを指定しておく。unsined longだと今度は64bit環境でダメ。省略してunsignedだけの場合、普通はunsigned intになる筈だけど、なぜunsigned charになっているのは謎。
- 再度コンパイル
cd /usr/local/src/mycache g++ -DMYCACHED_USE_EPOLL=1 -shared -fPIC -Wall -g -O2 \ -I ../mysql-5.1.44/include \ -I ../mysql-5.1.44/sql \ -I ../mysql-5.1.44/regex \ mycached_as_udf.cc -o mycached_as_udf.so
プラグインを停止する
- mycachedを止める
SELECT mycached_stop();
DROP FUNCTION mycached_start; DROP FUNCTION mycached_stop;
プラグインを再度登録
cp mycached_as_udf.so /usr/local/mysql/lib/mysql/plugin/
CREATE FUNCTION mycached_start RETURNS INT SONAME 'mycached_as_udf.so'; CREATE FUNCTION mycached_stop RETURNS INT SONAME 'mycached_as_udf.so';
- memcacheプロトコルアクセス用ポートを開始
サンプルの通りホストのIPアドレスが0だと、すべてのインターフェース(グローバル側も)にて公開されてしまう。ローカルな環境または、iptablesでフィルタリングしていない場合は127.0.0.1、または192.168.0.x等のプライベートなIPアドレスを設定しておこう。尚、ホストの設定はINT型なので、inet_atonで変換して設定する。
SELECT mycached_start(inet_aton('127.0.0.1'), 11211, 4);
今度はうまく行った!!