我们有一个MySQL设置,有一个主设备和两个从设备,我们使用Spring 3.0连接到DB和mysql-connector-java-5.1.13.jar。 我们还使用commons dbcp 1.4进行连接池。
我们使用以下jdbc url字符串:
JDBC:MySQL的:复制:// [master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306 / wm_admin autoReconnectForPools =真安培; roundRobinLoadBalance =真安培; loadBalanceBlacklistTimeout = 5000&安培; loadBalanceStrategy =随机
问题是,如果其中一个从站关闭,应用程序将无法启动,或者如果它正在运行且其中一个从站关闭,则应用程序将停止运行。 url字符串是否有问题,是否应该设置不同?
答案 0 :(得分:3)
当所有奴隶都死了时,我注意到了类似的问题。它可以用mysql-connector-5.1.38
解决url中的下一个参数: JDBC:MySQL的:复制:// [master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306 connectTimeout = 5000&安培;了socketTimeout = 5000&安培; retriesAllDown = 3及allowMasterDownConnections =真安培; allowSlaveDownConnections =真安培; loadBalanceBlacklistTimeout = 10000&安培; readFromMasterWhenNoSlaves =真
另外,如果你不害怕master上的readonly查询 - 你可以将master添加到slave列表:jdbc:mysql:replication:// [master_ip]:23306,[master_ip]:23306,[slave1_ip]:23306, [slave2_ip]:23306
所以你不会遇到“所有奴隶死了”的情况。
答案 1 :(得分:1)
也许是documentation的解决方案:
如果要在没有从属设备的情况下允许连接到主设备 可用,将属性readFromMasterWhenNoSlaves设置为“ true”。