检测到只读状态时创建新的 MySQL 连接 - AWS RDS 故障转移

检测到只读状态时创建新的 MySQL 连接 - AWS RDS 故障转移

Apache Tomcat/7、CentOS、AWS RDS Aurora 5.6.10a

AWS 提供了一个集群 CNAME,它随时指向集群的写入器实例。例如 dbname-cluster.cluster-id.us-west-2.rds.amazonaws.com 此名称用于资源 URL 值,并且不会更改。故障转移完成后,CNAME 记录将指向新提升的写入器实例,SQL 流量将继续在该实例中工作。

配置的问题是应用程序和 MySQL 实例之间的连接没有改变,因此故障转移后会产生问题,因为数据库处于只读模式。这需要重新启动 Tomcat。通过在 $JAVA_HOME/jre/lib/security/java.security 中设置 networkaddress.cache.ttl=0 来禁用 Java DNS 缓存确实可以解决这个问题,因为连接器将在发生故障后重试,然后连接到写入器实例。缺点是应用程序的 DNS 缓存丢失。我正在寻找一种方法来定期测试数据库的状态,如果确定为只读,则创建到同一 URL 的新连接。

我读过有关 MySQL、JDBC 高可用性和集群的文章,但都是在列出主 MySQL 服务器和辅助 MySQL 服务器的上下文中。在我的例子中,服务器 URL 从未改变,因此故障转移到另一个服务器 URL 的方法不适用。我希望找到一种方法来测试连接,如果发现是只读的,则创建到同一服务器 URL 的新连接。

相关内容