freebsd上运行mysql-proxy

这里假定已经有两台服务器分别装好了Mysql, 192.168.0.5 的是主服务器, 192.168.0.1 的是从服务器,我们要实现读写分离,让读操作都去读从服务器,写操作去写主服务器。

安装方法按 Port 编译

$cd /usr/ports/databases/mysql-proxy
$sudo make install clean

很容易吧,安装好要修改几处配置文件:

要编辑 /etc/rc.conf

mysql_proxy_address=”:3308″
mysql_proxy_admin_address=”:4041″
mysql_proxy_args=” –proxy-read-only-backend-addresses=192.168.0.1:3306  –proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua  –keepalive”
mysql_proxy_backend_addresses=”192.168.0.5:3306″
mysql_proxy_enable=”YES”

要解释一下,mysql-proxy 对程序开放的默认端口是4040 ,这里我修改成 3308 。 不管是那个端口,你的程序在连接 mysql 的时候,原来都是默认的3306端口,现在改成新的端口就行了。

还有一个 mysql_proxy_args= 后面的东西,那个 rw-splitting.lua 是一个默认的读写分离的脚本,这个脚本默认在前四个链接,还是使用的主服务器,当超过4个链接后,才开始真正的读写分离,去使用从服务器。

还有那个 –keepalive 非常重要,不能省略,虽然没有这个参数,也能工作,但是mysql-proxy 不是太稳定,有时候不打个招呼就退出了。 在生产服务器上这还了得,所以加上这个参数,启动的时候会启动两个进程,其中一个进程用于监控另外一个进程,如果死掉,会自动重启一个新的进程。

启动脚本/usr/local/etc/rc.d/mysql-proxy start

重启脚本 /usr/local/etc/rc.d/mysql-proxy restart

停止脚本 /usr/local/etc/rc.d/mysql-proxy stop