一、搭建好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从服务器上,用来分担数据库压力。