2

这是我第一次使用 mysql-proxy,我遇到了奇怪的行为,我想知道社区之前是否已经解决过它。

我在连接到 2 个 mysql 服务器的 amazon linux(在 ec2 中)上运行 mysql-proxy(0.8.2)。我的 java 客户端可以连接到代理并且负载平衡工作正常。

我的问题是:我有一个客户端(通过代理)连接到服务器 A。在我测试故障转移之前它工作得很好。当我关闭服务器 A 并且客户端尝试执行简单的插入命令(在已建立的连接上)时,我期待代理将请求重定向到服务器 B。但是我得到了这个异常:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障。

本例中的客户端是使用 mysql-connector-java-5.1.17-bin.jar 的 Java 程序

有什么想法可以解决这个问题,还是我在这里遗漏了什么?

4

1 回答 1

0

这是有关此问题的更新,以防其他人遇到相同的问题。

当客户端连接到它时,mysql-proxy 似乎会检查后端服务器上的状态。它不会对 DB 执行任何 keepalive\heartbeat。我曾尝试使用 lua 脚本强制执行此类行为,但惨遭失败。

一个潜在的替代方案可能是使用 HAProxy 并包含 xinted mysqlchecks。我没有亲自尝试过。我们最终可能会构建一个代理连接客户端,它将包装 java.sql.Connection 并与 mysql-proxy 进行适当的交互。

如果您找到其他方法来实现上述目标,请告诉我。

于 2011-09-16T22:45:14.343 回答