我在Java应用程序中使用jdbc:mysql:loadbalance://...
。
jdbc url是这样的。
jdbc:mysql:loadbalance://xxx.xxx.xxx.xx,yyy.yyy.yyy.yyy.../database?zeroDateTimeBehavior=convertToNull&autoReconnect=true
当所有数据库服务器都处于活动状态且mysqld正在运行时,我可以从此URL获得相同的连接。 此外,当所有数据库服务器都处于活动状态(ping可达)且一个mysqld未运行(即mysqld出现问题或崩溃)且其他服务器正在运行时,我也可以这样做。
但是当其中一个服务器不活动时会出现问题。例如,我关闭了yyy服务器并尝试建立连接。故障转移机制似乎正常工作,我终于可以建立连接。但是花了太长时间(约75-85秒)。
如何缩短这段等待时间?
答案 0 :(得分:2)
正如@randyumi在评论中所述,我的解决方案对他有用,我将此作为一个合理的答案添加。
延迟回退的原因是由于mysql尝试连接到主数据库实例并等待它响应一段时间,即connection timeout
。一旦连接超时到期,mysql就会切换到回退。
因此,减少默认连接超时可以减少延迟。