MySQL c # Строка переключения при сбое - PullRequest
0 голосов
/ 10 мая 2018

Мне известно, что я могу разделять хосты в строке подключения запятой и использовать разные серверы: https://www.connectionstrings.com/mysql-connector-net-mysqlconnection/multiple-servers/

, например: Server = serverAddress1, serverAddress2, serverAddress3; Database = myDataBase;Uid = myUsername; Pwd = myPassword;

Но мне нужна информация о том, как именно он выбирает серверы.Например, это круговой?Или идет по порядку, пока не найдет работающий?

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

TIA - Джо

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В документации MySQL говорится, что несколько хостов можно разделить запятыми:

Можно указать несколько хостов через запятую.Это может быть полезно, когда несколько серверов MySQL сконфигурированы для репликации, и вас не беспокоит точный сервер, к которому вы подключаетесь.

К сожалению, эта информация неверна.Имеется давняя ошибка ( MySQL bug 81650 , MySQL bug 88962 ), сообщающая, что эта функция не работает, как описано.

Однако существует альтернативаПоставщик OSS MySQL ADO.NET, который поддерживает несколько хостов, разделенных запятыми: MySqlConnector на GitHub , NuGet .Кроме того, он имеет Load Balance параметр строки подключения , который позволяет вам указать точный тип балансировки нагрузки, который вы хотите: RoundRobin, FailOver, Random, LeastConnections.

0 голосов
/ 10 мая 2018

Документация MySQL - ваш друг здесь.В нем указывается

Список хостов в URL-адресе соединения состоит из двух типов хостов: первичный и вторичный .При запуске нового соединения драйвер всегда сначала пытается подключиться к первичному хосту и, при необходимости, последовательно переключается на вторичные хосты в списке при возникновении проблем со связью.Даже если первоначальное подключение к первичному хосту завершается неудачно и драйвер подключается к вторичному хосту, первичный хост никогда не теряет своего особого статуса

Таким образом, в приведенной ниже строке подключения первый хост является основными будет выбран первым для подключения.Только если это недоступно, будет выбран дополнительный хост.Он также попытается вернуться к первичному хосту как можно скорее, но его настройку можно настроить.

jdbc: mysql: // [первичный хост] [: порт], [вторичный хост 1][: порт] [, [вторичный хост 2] [: порт]] ... [/ [база данных]] »[? propertyName1 = propertyValue1 [& propertyName2 = propertyValue2] ...]

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-config-failover.html

...