现在我正在连接到我为Aurora DB-MySQL兼容群集设置的群集端点,在我从AWS控制台执行“故障转移”后,我的Web应用程序无法正确连接到数据库这应该是可写的。
我的设置是这样的:
使用HikariCP作为连接池的Java Web App(tomcat8),其中ConnecterJ作为MySQL的驱动程序。我正在评估Aurora-MySQL,看看它是否能满足应用程序的一些需求。 Web应用程序位于EC2实例中,该实例与Aurora-MySQL群集位于同一VPC和SG中。我通过集群端点连接到数据库。
故障转移后,我希望HikariCP断开连接(确实如此),然后尝试重新连接(确实如此),但是,应用程序必须连接到错误的服务器,因为任何时候写入数据库都会,抛出一个SQL异常,说:
The MySQL server is running with the --read-only option so it cannot execute this statement
这里有什么解决方案?在所有连接断开后,或者在我开始收到此错误之后,我是否应该重新编写代码以刷新DNS,然后尝试重新启动连接?这似乎不对......
答案 0 :(得分:2)
我不知道为什么我一直在问问题,如果我只是回答它们(我应该更耐心),但如果有人在谷歌搜索中发现这个问题,这里有一个答案:
RDS在使用群集端点时使用DNS更改,使其看起来“无缝”。由于主机名后面的IP可以更改,如果有任何类型的缓存,那么您可以很快看到如何不反映更改。以下是来自AWS'文档的页面,其中包含更多内容:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-jvm-ttl.html
为了解决我的问题,我进入了jvm的安全文件,然后将其更改为0只是为了验证发生了什么是正确的。似乎是对的。现在我只需要弄清楚如何正确地做到这一点......