在linux中实现MySQL代理的读写分离

贡献者: szh0129

所谓读写分离:用户只需要访问MySQL代理服务器,而实际的SQL查询、写入操作交给后台的2台MySQL服务器来完成 ,其中Master服务器允许SQL查询、写入,Sl e服务器只允许SQL查询

1使用4台Centos6.5虚拟机,如图所示。其中192.168.4.10、192.168.4.20分别作为MySQL主、从服务器,是整个服务的后端;另一台 192.168.4.100作为MySQL代理服务器,是直接面向客户的服务前端;客户机192.168.4.120用作访问测

2将四台机器yum源搭好,并实现相互之间可以通信。如下图操作:

3安装MySQL官方提供的mysql-proxy软件包(由于LUA脚本语言),需要装lua包:如下图

4切换到部署后的目录,可确认相关目录、可执行程序、脚本。准备读写分离的LUA策略脚本如下图操作:

5启动mysql-proxy代理服务,分别指定读、写服务器,相关操作如下:1. [root@pxysvr ~]# cd /usr/local/mysql-proxy/2. [root@pxysvr mysql-proxy]# bin/mysql-proxy -P 192.168.4.100:3306 \ -b 192.168.4.10:3306 -r 192.168.4.20:3306 -s rw-splitting.lua &确认是否在运行,如图所示:

6测试通过mysql-proxy的读写分离,在MySQL Master服务器上设置用户授权以root用户为例,允许其从192.168.4.0/24网段的客户机远程访问。首先登入到Master服务器添加下列授权:

7从客户机192.168.4.120访问MySQL数据库注意连接的是mysql-proxy服务器,而并不是Master或Sl e,测试发现可以远程登录mysql服务器中,如图所示

8测试数据库写入操作和数据库读取操作如下图操作:

9在Master和Sl e上确认客户端新建的库、表是否存在,如果存在说明代理已经生效并且可以实现读写分离:

此前已配置mysql库的主从同步,SL E上的root授权会自动更新

1 2 3 4 5