前文讲了配置master/slave模式的mysql,现在在此基础上配置proxy,使得master和slave读写分离和负载均衡
环境再次介绍
192.168.153.129 master
192.168.153.130 slave
192.168.153.128 proxy
一、安装mysql-proxy
我是直接从官网上下载的二进制包,免去了make build的过程,这个过程很痛苦,相信我。
下载后解压,并拷贝到我们的工作目录/usr/local/mysql-proxy下
二、配置proxy
在/usr/local/mysql-proxy/share/doc/mysql-proxy下找到rw-splitting.lua文件,拷贝到proxy的根目录下,方便操作
cp /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua /usr/local/mysql-proxy/
同时在mysql-proxy目录下创建proxy的配置文件,文件名暂且叫mysql-proxy.cnf
在里面添加如下内容
[mysql-proxy]
proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua
proxy-backend-addresses=192.168.153.129:3306
proxy-read-only-backend-addresses=192.168.153.130:3306
好了,配置完毕
三、添加proxy账户
由于之前已经做master/slave的数据同步,所以我们只要在master上创建一个proxy账户就可以了
grant all on *.* to 'proxy'@'192.168.153.128' identified by 'proxy';
这时可以测试一下看看slave上有没有这个账户,结果应该是有的,否则就不正确了
四、启动proxy
在192.168.153.128这台proxy机器上启动proxy服务
mysql-proxy --defaults-file=/usr/local/mysql-proxy/mysql-proxy.cnf
当看到2015-01-16 16:39:36: (critical) plugin proxy 0.8.5 started类似的提示时,说明启动成功了
五、测试
先造点测试数据,我的思路是这样,利用root账户在slave上的test库中创建一个表,随便插入写数据
这种情况,master是不会有这个表和数据的
利用这个,我们可以多打开几个proxy客户端,去查这个表的数据
我们的proxy的IP和PORT为192.168.153.128:4040
mysql -uproxy -pproxy -h192.168.153.128 -P4040
在每个客户端里都执行select语句,知道发现结果不一致,说明测试成功
以上,就是今天的成果了,哈哈,虽然只是极简易的配置操作,但算是体验了一把,还是很有收获的:)