2010年5月7日金曜日

CentOSに"MySQL Proxy"

スズキです。

MySQLのサイトにRHEL5用のバイナリが用意されているので、
以下のように、そちらを利用します。

# cd /opt/
# curl -OL http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz
# tar xvzf mysql-proxy-0.8.0-linux-rhel5-x86-32bit.tar.gz
# ln -s mysql-proxy-0.8.0-linux-rhel5-x86-32bit mysql-proxy

次に、以下で紹介されている起動スクリプト(/etc/init.d/mysql-proxy)を用意します。
http://forge.mysql.com/wiki/MySQL_Proxy_init

ただし、
< PROXY_PATH=/opt/mysql-proxy/sbin
の部分を次のように
> PROXY_PATH=/opt/mysql-proxy/bin
上記に展開したディレクトリ構成にそろえる必要があります。(パーミッションも775に)

そして、以下のように、"/etc/sysconfig/mysql-proxy"を作成しておきます。

--------【mysql-proxy】--------
PROXY_OPTIONS="--daemon --defaults-file=/etc/my.cnf"
--------

以下のような"/etc/my.cnf"も用意しておきます。

--------【my.cnf】--------
[mysql-proxy]
max-open-files = 1024
log-file = /var/log/mysql-proxy.log
log-level = message
--------

注意点として、"max-open-files = 1024"を指定しておかないと、
下記のようなエラーが発生します。

# /etc/init.d/mysql-proxy start
mysql-proxy を起動中: 2010-04-26 21:33:01: (critical) chassis-limits.c:81:
could not raise RLIMIT_NOFILE to 8192, Invalid argument (22). Current
limit still 1024.

また、"my.cnf"のパーミッションを660にしておかないと、下記のようなエラーも発生します。

# /etc/init.d/mysql-proxy start
mysql-proxy を起動中: 2010-05-07 15:09:33: (critical) chassis-filemode.c:62:
/etc/my.cnf permissions not secure (0660 or stricter required)

正常に起動すると、下記のようなログが確認できると思います。

# less /var/log/mysql-proxy.log
2010-05-07 15:13:20: (message) mysql-proxy 0.8.0 started
2010-05-07 15:13:20: (message) proxy listening on port :4040
2010-05-07 15:13:20: (message) added read/write backend: 127.0.0.1:3306

上記より、MySQLクライアントで4040ポートに接続すると、
127.0.0.1:3306ポートのMySQLに透過的に接続されるようになってることがわかります。

RPM化して、SUZ-LABリポジトリに置こう...

--------
http://www.suz-lab.com

0 コメント: