MySQL 代理负载平衡器问题

标签 mysql mysql-proxy

<分区>

我尝试配置 mysql-proxy 0.8.2 .它背后有两个主机:M1 (10.10.10.1) 和M2 (10.10.10.2)。

M1M2 之间有一个MySQL 复制。 M1 是主机,M2 是从机。 All request what type is "write", 正确转发到 M1 并立即将此记录从 M1 复制到 M2

但是如果请求类型是“读”,代理不能转发到M2,只能转发到M1。我用 tcpdump 检查了这些数据包,我看到每个数据包都在 M1 上收到。从代理到 MySQL 服务器的连接正在使用 telnet 和 MySQL 命令进行完美检查。

当我关闭M1 服务器时,所有请求(读/写)都发送到另一个(M2)服务器。 M1 服务器关闭后,M2 运行良好。每条记录都可用。

我不明白为什么 mysql-proxy 没有将读取的数据包也转发到 M2,而 M1 可用。问题是什么?或者这是它通常应该如何运行?

这是我的配置:

[mysql-proxy]
daemon = true
user = mysql
proxy-skip-profiling = true
keepalive = true
max-open-files = 2048
event-threads = 50
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
admin-address = 10.10.10.5:4401
admin-username = admin
admin-password = xxxxxxx
proxy-address = 0.0.0.0:3307
proxy-read-only-backend-addresses = 10.10.10.2:3306
proxy-backend-addresses = 10.10.10.1:3306

plugin-dir=/usr/local/lib/mysql-proxy/plugins
plugins=proxy,admin,debug,replicant

LUA_PATH = /usr/lib/mysql-proxy/lua/proxy/?.lua
LUA_CPATH = /usr/lib/mysql-proxy/lua/?.so
admin-lua-script=/opt/mysql-proxy-0.8.2/admin.lua
proxy-lua-script=/usr/local/lib/mysql-proxy/lua/proxy/rw-splitting.lua
proxy-lua-script=/usr/local/lib/mysql-proxy/lua/proxy/balance.lua
proxy-lua-script=/opt/mysql-proxy-0.8.2/riporter.lua

最佳答案

过去该选项存在一些问题,但在您使用的版本中没有。

--proxy-read-only-backend-addresses 不会导致代理将读取请求转发到该选项指定的后端。

为此,您需要更改一个 lua 脚本(或编写一个新脚本)来读取只读后端地址选项并定义您想要的行为。

您可以阅读更多相关信息 here .

希望这能为您提供一些进一步研究的线索。

关于MySQL 代理负载平衡器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458764/

相关文章:

mysql - 我可以让三个数据库的三个mySQL三个字段一起交互吗?

Mysql嵌套查询和GROUP BY

php - Tinymce,php不将数据存储到mysql中

php - MySQLi 从 table1 查询并将详细信息更新到 table2

mysql - 使用 mysql-proxy 操作登录信息

mysql - 我如何用 mysql-proxy 或任何可能的方式替换我的查询?

mysql - MySQL 忽略包含连字符的行

mysql - 在没有 MySQL Proxy 的情况下代理到 MySQL 的连接

mysql-proxy 明文密码