0

我有下面列出的三个 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. 我不知道为什么负载平衡不起作用,是不是有些地方我犯了错误?先感谢您。

4

1 回答 1

1

rw-splitting.lua 似乎将一些实现留给读者作为练习。有一条评论“选择一个随机后端”,但我没有看到它的实现,或者循环技术。当没有空闲连接时,代码似乎从顶部填充后端服务器到阵列中的下一个。

如果主服务器上总是有空闲连接,那么当前的实现更喜欢去那里。之后,它使用只读后端服务器列表中的第一个空闲连接。在这种情况下,76 直到您将其关闭时,它移至 69。我不明白为什么 77,读/写后端不是首选。这可能与可用的空闲连接数有关。

似乎寻找最低的 proxy.global.backends.connected_clients,即后端当前活动的连接数,将是确定使用的后端优先级的好方法。

你还应该看看平衡模块 lib/mysql-proxy/lua/proxy/balance.lua

于 2012-12-02T03:48:27.030 回答