建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > Mysql 教程 >

MySQL Proxy 学习笔记

时间:2012-01-11 20:16来源: 作者: 点击:
【 测试平台 】 服务器端: 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

【 测试平台 】

服务器端: 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)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片