mysql proxy代理安装和配置
服务器说明:
192.168.0.123 mysql主库(主从复制)
192.168.0.114 mysql从库(主从复制)
192.168.0.202 mysql proxy代理(实现读写分离)
1,下载安装mysql_proxy:
解压到:/usr/local/mysql-proxy
2,启动:
./bin/mysql-proxy --proxy-backend-addresses=192.168.0.114:3306 --proxy-backend-addresses=192.168.0.123:3306
3,主库和从库给代理服务器创建登录用户并授权
登录主库192.168.0.123,给代理主机192.168.0.202创建登录用户并授权
ssh root@192.168.0.123 // 登录主数据库服务器
mysql -uroot -p123456 // 连接mysql数据库
mysql>grant all on *.* to 'test'@'192.168.1.202' identified by '111111'; // 创建登录用户并授权
mysql>flush privileges; // 刷新MySQL的系统权限相关表
4,修改mysql proxy的读写分离脚本的配置
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
默认最小4个(最大8个)以上的客户端连接才会实现读写分离, 现改为最小1个最大2个,便于读写分离的测试
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, // 改为1
max_idle_connections = 2, // 改为2
is_debug = false
}
end
这是因为mysql-proxy会检测客户端连接, 当连接没有超过min_idle_connections预设值时,
不会进行读写分离, 即查询操作会发生到Master上.
5,开启防火墙端口设置
vim /etc/sysconfig/iptables //打开防火墙配置文件,加入以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4040 -j ACCEPT
注:mysql-proxy的服务端口默认为4040
6,测试mysql proxy读写分离
在读写分离测试时,需要开启多个客户端窗口连接mysql-proxy
a、打开主库的mysql 日志
tail -f /usr/local/mysql/my.log
b、打开从库的mysql 日志
tail -f /usr/local/mysql/my.log
c、开启多个客户端窗口连接mysql-proxy
mysql -h192.168.0.202 -P4040 -utest -p123456
7,配置参数详解:
管理相关参数
--admin-address=host:port:指定管理员主机及服务端口,默认值为localhost:4041。
--admin-lua-script=script_file:指定管理模块的lua脚本文件。
--admin-username=user:指定登录到mysql-proxy管理界面的用户名。
--admin-password=pass:指定登录到mysql-proxy管理界面的用户密码。
代理相关参数
- --proxy-address=host:port:简写形式-P
指定监听服务的主机名(或IP地址)及服务端口,默认端口号为4040。
- --proxy-backend-addresses=host:port,简写形式-b
当使用命令行模式调用本参数时,参数后只能跟一个服务,如果要代理的服务有多个,那么必须同时指定多个参数,比如说:
# mysql-proxy --proxy-backend-addresses 192.168.0.114:3306 --proxy-backend-addresses 192.168.0.123:3306
如果是使用配置文件指定本参数的话,就可以在一个参数中指定多个值了,参数值之间以,(逗号)分隔即可,例如:
proxy-backend-addresses = 192.168.0.114:3306, 192.168.0.123:3306