MySQL JDBC负载均衡和故障转移

时间:2014-02-14 01:32:54

标签: java mysql jdbc

我在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秒)。

如何缩短这段等待时间?

1 个答案:

答案 0 :(得分:2)

正如@randyumi在评论中所述,我的解决方案对他有用,我将此作为一个合理的答案添加。

延迟回退的原因是由于mysql尝试连接到主数据库实例并等待它响应一段时间,即connection timeout。一旦连接超时到期,mysql就会切换到回退。

因此,减少默认连接超时可以减少延迟。