MySQL-Proxy主从搭建读写分离全过程

首先搭建mysql主从数据库,参考:http://www.phpoac.com/read.php?tid=133

下载mysql-proxy最新版,本文撰写时最新版本为 MySQL Proxy 0.8.1 alpha
安装mysql-proxy步骤如下:
解压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 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/loc/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-addresses                    mysql主库(写)地址
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脚本

  1. #!/bin/bash
  2. mode=$1
  3. if [ -z "$mode" ] ; then
  4. mode="start"
  5. fi
  6. case $mode in
  7. start)
  8. mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &
  9. ;;
  10. stop)
  11. killall -9 mysql-proxy
  12. ;;
  13. restart)
  14. if $0 stop ; then
  15. $0 start
  16. else
  17. echo  "Restart failed!"
  18. exit 1
  19. fi
  20. ;;
  21. esac
  22. 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文件的优化与定制,不久会发上来。

文章如转载,请注明:转载自:PHP开源[http://www.phpoac.com/]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值