主从复制jdbc url

发布于 2024-11-01 19:44:28 字数 488 浏览 1 评论 0原文

我们有一个 MySQL 设置,其中一个主服务器和两个从服务器,我们使用 Spring 3.0 连接到数据库和 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 字符串是否有问题,是否应该进行不同的设置?

We have a MySQL setup with one master and two slaves we use Spring 3.0 to connect to the DBs and mysql-connector-java-5.1.13.jar.
We also use commons dbcp 1.4 for connection pooling.

We use the following jdbc url string:

jdbc:mysql:replication://[master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306/wm_admin?autoReconnectForPools=true&roundRobinLoadBalance=true&loadBalanceBlacklistTimeout=5000&loadBalanceStrategy=random

The problem is that the application will not start if one of the slaves is down, or would halt if it's running and one of the slaves is down. Is there a problem with the url string, should it be setup differently ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吃颗糖壮壮胆 2024-11-08 19:44:28

当所有奴隶都死了时,我注意到了类似的问题。可以使用 mysql-connector-5.1.38

和 url 中的下一个参数来解决:
jdbc:mysql:replication://[master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306?connectTimeout=5000&socketTimeout=5000&retriesAllDown=3&allowMasterDownConnections=true&allowSlaveDownConnections=true&loadBalanceBlacklistTimeout=10000&放大器; readFromMasterWhenNoSlaves=true

另外,如果您不担心主服务器上的只读查询 - 您可以将主服务器添加到从服务器列表中: jdbc:mysql:replication://[master_ip]:23306,[master_ip]:23306,[slave1_ip]:23306, [slave2_ip]:23306

所以你不会遇到“所有奴隶都死了”的情况。

I noticed a similar problem when all slaves were dead. It may be solved with mysql-connector-5.1.38

And next parameters in url:
jdbc:mysql:replication://[master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306?connectTimeout=5000&socketTimeout=5000&retriesAllDown=3&allowMasterDownConnections=true&allowSlaveDownConnections=true&loadBalanceBlacklistTimeout=10000&readFromMasterWhenNoSlaves=true

Also, if you don't afraid readonly queries on master - you can add master to slaves list: jdbc:mysql:replication://[master_ip]:23306,[master_ip]:23306,[slave1_ip]:23306,[slave2_ip]:23306

So you won't meet case with "all slaves dead".

冷清清 2024-11-08 19:44:28

也许是来自 文档

如果你想在没有从站时允许连接到主站
可用,请将属性 readFromMasterWhenNoSlaves 设置为“true”。

Maybe a solution from the documentation :

if you want to allow connection to a master when no slaves are
available, set the property readFromMasterWhenNoSlaves to “true.”

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文