MySQL Proxy的使用实验
一、MySQL Proxy有什么用
MySQL Proxy,顾名思义,MySQL的服务代理,我们的客户端通过MySQL的代理去操作数据库,从而不必关系代理后面的架构。
实际应用中,可以数据库负载均衡,Proxy能够自动的平均分发用户的请求到代理后端的各个数据库服务器,我们可以完成各个数据库的读写分离,由于MySQL Proxy支持lua脚本语言,所以配置相当灵活,我们可以通过Proxy转发用户哪些简单的查询个新语句到MySQL Cluster的服务器上,把复杂的查询语句转发到一台单独的服务器上。
关于MySQL Proxy的更多相关信息,读者可以通过以下地址获取更多信息:
http://forge.mysql.com/wiki/MySQL_Proxy_Overview
二、安装MySQL Proxy
如果读者喜欢编译安装的话,请移步去看这篇文档:
http://hi.baidu.com/thinkinginlamp/blog/item/f96559821fbda8aa0cf4d200.htm
这里主要讲述使用方面的,所以我直接yum安装它,我觉得如果你编译查错水平不是很高的话,那就下载rpm包进行安装,首先把它使用起来,以免编译不过打消我们的积极性。
三、配置
为了容易理解,我这里给出的结构图是四台主机电脑来实验MySQL Proxy,结构如下:
但是,我的试验环境不允许我这么做,我只有两台主机,所以其中一台必须要同时安装数据库和代理。
主机A: 192.168.0.11 B: 192.168.0.32 安装MySQL ,我们的MySQL Proxy安装在B主机上。
下面我们开始配置Proxy,首先按照官方的文档,首先我们去编辑服务启动脚本/etc/init.d/mysql-proxy,参照官方文档,内容只需修改一个地方,其它照搬官方的配置文档如下:
PROXY_PATH=/usr/sbin #唯一需要修改的地方,mysql-proxy程序的目录
这个文档编辑好后保存退出,我们还需要给它执行权限:
chmod +x /etc/init.d/mysql-proxy
接下来,我们编辑启动参数的配置文件:/etc/sysconfig/mysql-proxy
# options to mysql-proxy
# do not remove --daemon
PROXY_OPTIONS="--proxy-backend-addresses=192.168.0.11:3306 --proxy-backend-addresses=192.168.0.32:3306 –daemon"
后面跟得两个地址是我们的两台SQL服务器的地址,以守护模式运行。
接下来,由于代理服务需要去访问这两个主机,所以我们需要在两个MySQL服务里给它授权:
grant all on *.* to root@192.168.0.32
flush privileges;
四、测试
授权做好以后就可以重启各个服务器了,重启完了我们从客户端登录:
mysql -h192.168.0.32 -P4040
再开一个终端,同样执行以上的登录命令。
操作完成以后,我使用netstat命令:
# netstat -anp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19677/mysqld
tcp 0 0 192.168.0.32:35225 192.168.0.11:3306 ESTABLISHED 19826/mysql-proxy
tcp 0 0 192.168.0.32:34149 192.168.0.32:3306 ESTABLISHED 19826/mysql-proxy
tcp 0 0 192.168.0.32:3306 192.168.0.32:34149 ESTABLISHED 19677/mysqld
你可以看到,mysql-proxy开了两个端口,分别连接两个数据节点服务器。
进去以后就已经是通过代理的一个服务了,可以自己更新表数据试一下,你会发现两个终端都是不一样的返回结果。