java - Mysql-Proxy 不进行故障转移(?)

标签 java mysql failover mysql-proxy

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

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

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

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure.

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

关于如何解决这个问题的任何想法,或者我在这里遗漏了什么?

最佳答案

这是关于这个问题的更新,以防其他人遇到同样的问题。

似乎mysql-proxy在客户端连接到它时检查后端服务器上的状态。它不对数据库执行任何保活\心跳。我曾尝试使用 lua 脚本强制执行此类行为,但惨遭失败。

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

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

关于java - Mysql-Proxy 不进行故障转移(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7391680/

相关文章:

java - 将 java 应用程序部署到 weblogic 时出错

mysql - 多行到一行制作一个字段数组?

mysql - 如何保留数据库中textarea的布局?

mongodb - 如果发生故障的服务器从故障转移返回,会发生什么情况?

datasource - Quartz 调度程序不会在 AWS RDS 故障转移上更新数据库连接

java - 创建 HttpsSession 时如何更改 DefaultSessionTrackingModes

java - 如何更改 Google Flogger(Java 流畅日志记录 API)的日期格式?

mysql - Python 和 Mysql 查询问题 - 结果错误

caching - 缓存失效和缓存服务器重启

java - 无论类型如何,都从文件中读取对象,从泛型类型推断读取方法