问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql-proxy怎么搭建

发布网友 发布时间:2022-04-08 06:17

我来回答

1个回答

热心网友 时间:2022-04-08 07:46

安装 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 安装测试完成。
注:生产环境一定要根据实际情况配置相关文件,至于 lua 文件强烈推荐读者自行,目前正在研究 lua 文件的优化与定制,不久会发上来。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 谁给些脑筋急转弯.. 描写着装的四字词语 居民健康码绿码怎么显示外省未查验 西装革履的拼音 西装革履,相貌堂堂是什么意思? 西装革履的反义词 什么动物可以创造了摩 什么动物可以创造摩托车 西装革领还是西装革履 西装革履的近义词 西装革履是贬义词吗 西装革履的履字意思 猜个谜语,急~~~。 微信绿码定位,是通过手机卡还是定位? 西装革履正确意思是什么? 求50条比较难猜的谜语~一条一分~ 平遥古城去了绿码会变吗 摩托车子无牌照,行驶最怕大沿帽,如果你没驾驶证,最好在家别出行,猜动物 西装革履的意思 出市区到别市区多少时间行程码会变,绿马和黄马 我的快手永久封号了怎么解封? 销售业绩要求 vivoy30与荣耀play4Tpro那个玩游戏好点? vivoz3和荣耀play性价比哪个更好? 我梦见了很多年前一张旧桌子这是什么梦啊? vivoz3和荣耀play哪个好? 荣耀play4t和vivoy5s对比 华为荣耀play4tpro和vivo y50哪个好? iphone数据迁移到三星s21 我现在用的是苹果4s,想换部三星9308,怎么把苹果里的所有资料转移到三星手机里。求高手详解,谢谢 苹果6p换三星 s6数据转移 怎么将iphone6数据转移到三星s8 苹果手机和三星手机之间可以用手机搬家转移资料吗 正泰DZ47LE-63 C60漏电保护器怎么接线 正泰家用漏电保护开关家用电相接法 正泰空气漏电开关双级DZ47LE32怎样接线 正泰380漏电保护器的接法 正泰漏电保护器NXBLE一40型进线端标志N接口接零线,如果接成火线会怎样? 1、正泰DZ47LE1P+N32A漏电保护开关应该如何接线? 2、如果就上面火线进,下面火线出。可以吗? 正泰1P漏电保护器该怎么接线 ?DZ47LE-32 C20,为什么上下都有连个端子 正泰NM1LE-125s/4300A断路器分励脱扣器中两根线与下一端子怎样接线