Мастер-подчиненный репликации URL JDBC - PullRequest
4 голосов
/ 15 апреля 2011

У нас есть настройка MySQL с одним ведущим и двумя ведомыми, мы используем Spring 3.0 для подключения к БД и mysql-connector-java-5.1.13.jar.Мы также используем commons dbcp 1.4 для пула соединений.

Мы используем следующую строку URL-адреса jdbc:

jdbc: mysql: репликация: // [master_ip]: 23306, [slave1_ip]: 23306, [slave2_ip]: 23306 / wm_admin? autoReconnectForPools = true & roundRobinLoadBalance = true & loadBalanceBlacklistTimeout = 5000 & loadBalanceStrategy = random

Проблема заключается в том, что приложение не запустится, если один из подчиненных устройств не работает, или остановится, если он работает, а один из подчиненных устройств не работает.Есть ли проблема со строкой URL, должна ли она быть настроена иначе?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2016

Я заметил похожую проблему, когда все рабы были мертвы. Это можно решить с помощью 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 - вы можете добавить master в список подчиненных: jdbc: mysql: replication: // [master_ip]: 23306, [master_ip]: 23306, [slave1_ip]: 23306, [slave2_ip]: 23306

Так что вы не встретитесь с делом "все рабы мертвы".

1 голос
/ 13 сентября 2018

Возможно решение из документации :

, если вы хотите разрешить подключение к ведущему, когда нет подчиненных устройств. доступно, установите для свойства readFromMasterWhenNoSlaves значение «true».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...