
解压 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz
tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz
cp -R mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql
新建或编辑 /etc/mysql-proxy.cnf 文件,添加以下内容 ( 具体参数根据实际情况修改 ) :
vi /etc/mysql-proxy.cnf
[mysql-proxy]
admin-username = zhangdongyu
admin-password = 123123
daemon = true
keepalive = true
proxy-backend-addresses = 192.168.0.88:3306
proxy-read-only-backend-addresses = 192.168.0.88:3307
proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
admin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua
log-file = /usr/local/proxy-mysql/cn.log
log-level = debug
主要参数注解:
proxy-backend-addressesmysql 主库(写)地址
proxy-read-only-backend-addresses mysql 从库(读)地址
proxy-lua-script 读写分离脚本
admin-lua-script admin 脚本
admin-username 数据库用户名(主从上都需建立相同用户)
admin-password 数据库密码
daemon daemon 进程运行
keepalive 保持连接(启动进程会有 2 个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)
编辑 profile/.bash_profile 脚本
vi /etc/profile( 或者 .bash_profile)
LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"
export LUA_PATH
export PATH=$PATH:/usr/local/proxy-mysql/bin
:wq
source /etc/profile
为方便建立建立 mysql-proxy.sh 脚本
#!/bin/bash
mode=$1
if [ -z "$mode" ] then
mode="start"
fi
case $mode in
start)
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &
stop)
killall -9 mysql-proxy
restart)
if $0 stop then
$0 start
else
echo "Restart failed!"
exit 1
fi
esac
exit 0
启动 mysql-proxy
sh 脚本
启动: ./mysql-proxy.sh 或 ./mysql-proxy.sh start
启动日志
重启: ./mysql-proxy.sh restart
停止: ./mysql-proxy.sh stop
测试:
为达到测试效果,修改 admin-sql.lua 脚本以下两行
vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, # 修改最小连接为 1
max_idle_connections = 2, # 修改最大连接为 2
is_debug = true#debug 为 true
}
end
重启 mysql-proxy 代理
开启两个终端分别连接代理:
ONE : ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
TWO : ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040
可看到连接成功信息:
*** 作 ONE 客户端:
执行 select 语句观察数据库 log 文件
select * from z_member_info
观察主从库日志文件,发现查询发生在主库?
主库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql/localstate/mysqlexecute.log
这是因为 mysql-proxy 代理会检测客户端连接,当连接没有超过 min_idle_connections 预设值时,不会进行读写分离,即查询 *** 作会发生到主库上。
*** 作 TWO 客户端:
执行 select 语句观察数据库 log 文件
select * from z_member_info
观察主从库日志文件,发现主库没有任何记录,查询日志记录在从库。
从库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql3307/localstate/mysqlexecute.log
*** 作两个终端进行 insert *** 作,会发现写 *** 作始终被主库( 3306 )日志文件记录。
至此 mysql-proxy 安装测试完成。
注:生产环境一定要根据实际情况配置相关文件,至于 lua 文件强烈推荐读者自行,目前正在研究 lua 文件的优化与定制,不久会发上来。
生产环境都使用什么Mysql中间件{OneProxy是经过他对MySQL Proxy进行修改过的版本,可以透明地支持MySQL分库分表、读写分离、Failover的一个高效的独立的中间件,对应用基本透明,非常适合于企业搭建私有的MySQL RDS集群,很好地解决数据层的可扩展性问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)