下面列出了三个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窗口时,但从日志中我发现所有的select sql查询都被发送到76的同一服务器,但是只有当我关闭76时,它才会将查询发送到从69。我不知道为什么负载均衡不起作用,是不是有什么地方我做错了?提前谢谢你。
发布于 2012-12-02 11:48:27
rw-splitting.lua似乎将一些实现留给了读者作为练习。有一个评论‘选择一个随机的后端’,但我没有看到它的实现,或循环技术。当没有空闲连接时,代码似乎会从顶部填充后端服务器,然后移到阵列中的下一个服务器。
如果在主服务器上总是有空闲的连接,那么当前的实现更倾向于去那里。之后,它使用只读后端服务器列表中的第一个空闲连接。在本例中为76,直到您将其关闭,然后将其移动到69。我不明白为什么77,读/写后端不是首选。这可能与可用的空闲连接数有关。
寻求最低的proxy.global.backends.connected_clients,即当前在后端活动的连接数量,似乎是确定所用后端的优先级的好方法。
您还应该查看平衡模块lib/mysql-proxy/lua/proxy/balance.lua
https://stackoverflow.com/questions/12766807
复制相似问题