MySQL Proxy

「等の準備も必要ですし」の辺りをちゃんと書け!と言われてしまいましたので...
MySQLの負荷分散 - なぜか数学者にはワイン好きが多い
もうちょっとだけ補足を.

MySQL Proxyのインストールには,次のものが必要です.

  1. Lua言語(The Programming Language Lua,日本語訳Lua言語の紹介
  2. libevent(libevent

libeventは,通常のCentOS 5等ですと,yum/RPMで簡単に入れられます.

# yum install libevent-devel

もし入らなくても,ソースからのインストールも簡単です.

また,LUAは,例えばCentOSだと,/usr/lib/pkgconfig/lua.pcというファイルを作って次のような感じの内容を記述しなければなりません.

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: lua
Description: lua language
Version: 5.1.2
Requires:
Libs: -L${libdir} -llua
Cflags: -I${includedir}

これらを入れてからMySQL Proxyのconfigureを走らせ,makeすると出来ます.
複数のMySQLサーバを指定して,どれか一つが死ぬと,こんな感じでメッセージが出て,そのサーバへのアクセスを一時的にストップしてくれます.

network-mysqld.c.299: connect(192.168.1.3:3306) failed: Connection refused
network-mysqld-proxy.c.3712: connecting to backend (192.168.1.3:3306) failed, marking it as down for ...
network-mysqld-proxy.c.3608: backend 192.168.1.3:3306 was down for more than 10 sec, waking it up

もちろん,サーバが死んでる間は他のサーバのみ使われますので,不幸にも生きているサーバへの負荷は高くなります.でも,全てのサーバが死なない限りアクセスは途切れません.死んだサーバを復活させると,自動的にそのサーバへもアクセスが行き,負荷分散されます.

なお,Linuxデフォルトのgcc3/4だけじゃなく,Intel C Compiler(icc)でも,簡単にインストールが出来ました.