MySQL-proxy的读写分离

一、搭建好mysql主从复制,具体操作见博客mysql主从复制配置

二、MySQL读写分离
场景描述:
数据库Master主服务器:172.25.66.1
数据库Slave从服务器:172.25.66.2
MySQL-Proxy调度服务器:172.25.66.3

以下操作,均是在172.25.66.3即MySQL-Proxy调度服务器 上进行的。

MySQL的安装与配置
具体的安装过程与主从数据库相同。

下载安装proxy:

tar zxvf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz  -C /usr/local/

cd/usr/local/

mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/   /usr/local/mysql-proxy

配置path 路径,添加到最后一行

vim/etc/profile

PATH= $PATH:/usr/local/mysql-proxy/bin 添加到最后一行

执行生效:
source /etc/profile

修改读写分离配置文件:

vim/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplitthen

  proxy.global.config.rwsplit = {

  min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1 测试需要

  max_idle_connections = 1, #默认8,改为1测试需要

  is_debug = false

  }

end

启动proxy:

mysql-proxy  --proxy-read-only-backend-addresses=172.25.66.2:3306       定义后端slave地址

--proxy-backend-addresses=172.25.66.1:3306     定义后端master地址

 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &

查看是否启动成功:

netstat-antup | grep proxy

测试读写分离效果

创建用于读写分离的数据库连接用户
登陆主数据库服务器172.25.66.1,通过命令行登录管理MySQL服务器
mysql> GRANT ALL ON *.* TO 'proxy1'@'172.25.66.%' IDENTIFIED BY 'Guodong+0306';
由于我们配置了主从复制功能,因此从数据库服务器172.25.66.2上已经同步了此操作。

为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能
登陆从数据库服务器172.25.66.2,通过命令行登录管理MySQL服务器
mysql -p

关闭Slave同步进程
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

连接MySQL-Proxy
mysql -uproxy1 -p'Guodong+0306' -P4040 -h172.25.66.3

由于关闭了2的slave,所以无法读取插入的数据

下面,分别登陆到主从数据库服务器,对比记录信息:

在master上查看:数据已经同步

在slave上查看,无法查看到数据

打开server2的slave,就可以执行读操作了

在真机中

由此验证,我们已经实现了MySQL读写分离,目前所有的写操作都全部在Master主服务器上,用来避免数据的不同步;
另外,所有的读操作都分摊给了其它各个Slave从服务器上,用来分担数据库压力。

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/81632511