我们有一个MySQL设置,其中有一个主机和两个从机,我们使用Spring 3.0连接到DB和mysql-connector-java-5.1.13.jar。
我们还使用commons dbcp 1.4进行连接池。
我们使用以下jdbc url字符串:
jdbc:mysql:replication:// [master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306 / wm_admin?autoReconnectForPools = true&roundRobinLoadBalance = true&loadBalanceBlacklistTimeout = 5000&loadBalanceStrategy = random
问题在于,如果其中一个从属服务器关闭,则应用程序将无法启动,或者如果正在运行并且其中一个从属服务器处于关闭状态,则应用程序将停止。 url字符串是否有问题,应该以其他方式设置吗?
最佳答案
当所有奴隶都死了时,我注意到了一个类似的问题。可以用mysql-connector-5.1.38解决
网址中的下一个参数:
jdbc:mysql:复制:// [master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306?connectTimeout = 5000&socketTimeout = 5000&retriesAllDown = 3&allowMasterDownConnections = true&allowSlaveDownConnections = true&loadBalanceBlacklistTimeout = 10000&readFromMasterWhenNoSlaves
另外,如果您不害怕对主服务器的只读查询,则可以将主服务器添加到从服务器列表中:jdbc:mysql:replication:// [master_ip]:23306,[master_ip]:23306,[slave1_ip]:23306,[slave2_ip] :23306
因此,您不会遇到“所有奴隶都死了”的案例。