Mysql-Proxy没有故障转移(?)

时间:2011-09-12 17:35:25

标签: java mysql failover mysql-proxy

这是我第一次使用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程序

任何想法如何解决这个或我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:0)

以下是此问题的更新,以防其他一些问题相同。

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

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

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