主从复制jdbc url

时间:2011-04-15 18:43:21

标签: java mysql jdbc replication

我们有一个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字符串是否有问题,是否应该设置不同?

2 个答案:

答案 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”。