我有三个下面列出的Mysql节点:
Master Address: 192.168.1.77:3306
Slave1 Address: 192.168.1.76:3306
Slave2 Address: 192.168.1.69:3306
在我在192.168.1.67上安装版本0.8.3的mysql-proxy后,在下面创建我的配置:
[mysql-proxy]
admin-username=proxy
admin-password=proxy
admin-lua-script=/local/software/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-read-only-backend-addresses = 192.168.1.76:3306,192.168.1.69:3306
proxy-backend-addresses=192.168.1.77:3306
proxy-lua-script=/local/software/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/local/software/mysql-proxy/log/mysql-proxy.log
plugin-dir=/local/software/mysql-proxy/lib/mysql-proxy/plugins
plugins=proxy,admin,debug,replicant
log-level=debug
keepalive=true
编辑文件:rw-splitting.lua
min_idle_connections = 1,
max_idle_connections = 2,
然后按照以下方式启动mysql-proxy:
./bin/mysql-proxy --defaults-file=mysql-proxy.cnf
登录代理:
mysql -uproxy -ppassword -P4040 -h192.168.1.67
当我一次又一次地执行select sql打开不同的mysql-proxy 4040窗口时,但是从log我发现所有select sql查询都被发送到同一服务器76,但是只有当我关闭了76,然后它会将查询发送到奴隶69.我不知道为什么负载均衡不起作用,是否有一些地方我犯了错误?提前谢谢你。
答案 0 :(得分:1)
rw-splitting.lua似乎将一些实现作为练习留给读者。有一个评论'选择一个随机的后端',但我看不到它的实现,或循环技术。当没有空闲连接时,代码似乎将后端服务器从顶部移动到阵列中的下一个服务器。
如果主设备上始终存在空闲连接,则当前实现更喜欢去那里。之后,它使用只读后端服务器列表中的第一个空闲连接。在这种情况下76,直到你将其关闭时,它移动到69.我不明白为什么77,读/写后端不是首选。可能这与可用的空闲连接数有关。
似乎寻求最低的proxy.global.backends.connected_clients,后端当前活动的连接数量,将是优先使用后端的好方法。
你还应该看看余额模块lib / mysql-proxy / lua / proxy / balance.lua