Mysql Proxy Lua主从搭建读写分离全过程是本文要介绍的内容,主要是来了解Mysql Proxy的读写分离的过程,很详细的讲解了全过程,具体内容我们来看详细内容。
下载 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 -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-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 脚本
- #!/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 安装测试完成。
小结:Mysql Proxy Lua主从搭建读写分离全过程的内容介绍完了,希望通过本文的学习能对你有所帮助!