现在,我正在连接到为aurora db mysql兼容集群设置的集群端点,在我从aws控制台执行“故障转移”之后,我的web应用程序无法正确连接到应该是可写的db。
我的设置如下:
javawebapp(tomcat8),hikaricp作为连接池,connecterj作为mysql的驱动程序。我正在评估auroramysql,看看它是否能满足应用程序的一些需求。该web应用位于与aurora mysql集群位于同一vpc和sg中的ec2示例中。我正在通过集群端点连接到数据库。
在故障转移之后,我希望hikaricp中断连接(确实如此),然后尝试重新连接(确实如此),但是,应用程序必须连接到错误的服务器,因为每当对数据库执行写入操作时,都会引发一个sql异常,该异常表示: The MySQL server is running with the --read-only option so it cannot execute this statement
这里的解决方案是什么?我应该在所有连接关闭后重新编写代码来刷新dns,还是在我开始收到此错误后,然后尝试重新启动连接?这似乎不对。。。
1条答案
按热度按时间iugsix8n1#
我不知道为什么我总是问问题,如果我只是回答他们(我真的应该更有耐心),但这里有一个答案,以防任何人在谷歌搜索中偶然发现这一点:
rds在使用群集端点时使用dns更改,使其看起来“无缝”。由于主机名后面的ip可以更改,如果有任何类型的缓存正在进行,那么您可以很快看到更改不会反映出来。以下是aws文档中的一页,对其进行了详细介绍:https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-jvm-ttl.html
为了解决我的问题,我进入jvm的安全文件,然后将其更改为0,以验证所发生的事情是否正确。似乎是对的。现在我只需要弄清楚怎么做。。。