【 测试平台 】 服务器端: OS:FreeBSD 6.2 Lua: 5.1.1 MySQL Server:4.1.22-log MySQL Proxy: 0.6.0 客户端: OS:Windows XP Pro SP2 PHP: PHP 5.2.4 (cli) MySQL Client: Ver 14.13 Distrib 5.1.19-beta for Win32 注意:本文使用的是最新版本 MySQL Proxy alpha 0.6.0 ,如果是0.5.0版本可能部分选项和操作不一致,同样的,以后如果除了新版本,请参照新版本文档。 【 MySQL Proxy 安装 】
$ fetch http://mirror.mysql-partners-jp.biz/Downloads/MySQL-Proxy/mysql-proxy-0.6.0-freebsd6-x86.tar.gz $ tar zxvf mysql-proxy-0.6.0-freebsd6-x86.tar.gz $ cd mysql-proxy-0.6.0-freebsd6-x86 $ cp sbin/mysql-proxy /usr/local/sbin/
如果无法正常使用,请检查相应的其他组件是否安装了,mysql-proxy 需要依赖 lua、libtool、glib、libevent 等库。 【 初步使用 】 执行 mysql-proxy --help-all 查看所有的设置选项,比较重要的选项大致描述一下功能: 管理功能选项
--admin-address=host:port — 指定一个mysqo-proxy的管理端口,缺省是 4041
代理功能选项
--proxy-address=host:port — 这个是mysql-proxy 服务器端的监听端口,缺省是 4040 --proxy-read-only-backend-addresses=<host:port> — 远程只读Slave服务器的地址和端口,缺省为不设置(本选项在mysql-proxy0.5.0版本中没有) --proxy-backend-addresses=host:port — 指定远程MySQL服务器地址和端口,可以设置多个,缺省是 127.0.0.1:3306 --proxy-skip-profiling — 关闭查询分析功能,缺省是打开的 --proxy-fix-bug-25371 — 修正 mysql的libmysql版本大于5.1.12的一个#25371号bug --proxy-lua-script=file — 指定一个Lua脚本程序来控制mysql-proxy的运行和设置,这个脚本在每次新建连接和脚本发生修改的的时候将重新调用
其他选项
--daemon — mysql-proxy以守护进程方式运行 --pid-file=file — 设置mysql-proxy的存储PID文件的路径
我们执行试试,监听本地MySQL是3000端口: /usr/local/sbin/mysql-proxy --proxy-backend-addresses=127.0.0.1:3000 然后从我的windows机器使用mysql客户端连接过去: mysql -uroot -h 192.168.0.2 -P 4040
Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3 Server version: 4.1.22-log Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
远程的mysql-proxy缺省对外监听的是4040端口,它会对连接4040端口的连接做处理后丢给后端3000端口的mysql服务器处理,把结果返回。 我们执行一条sql试试:
mysql> select version(); +------------+ | version() | +------------+ | 4.1.22-log | +------------+ 1 row in set (0.01 sec)
【 对两台/多台MySQL的负载均衡 】 首先我们目前MySQL Proxy 是支持多台后端MySQL数据库的,它可以支持同时设置多个 --proxy-backend-addresses 选项来使用多个MySQL,比如: /usr/local/sbin/mysql-proxy --proxy-address=192.168.0.2:3306 --proxy-backend-addresses=127.0.0.1:3000 --proxy-backend-addresses=192.168.0.2:4000 就分别连接了两台MySQL,一台是3000端口,一台是4000端口。 假设有两台Slave的读数据服务器,我们使用mysql_proxy多个数据库的轮询技术来进行两台Slave数据库的负载均衡分散访问措 施,mysql-proxy可以做到,缺省就具有了简单的均衡功能,它自带的均衡功能是当有多台MySQL服务器的时候,进行逐个访问的原则,比如有A、 B两台MySQL服务器,那么第一个连接就访问A,第二个连接访问B,第三个连接访问A,一次分布,达到A、B两台MySQL访问均衡。 (责任编辑:admin) |