ConnectionString для подключения 3 главных узлов к MySQL - PullRequest
0 голосов
/ 23 мая 2019

Backgroud

Я занимаюсь разработкой проекта .net, который работает с EF6 и MySQL DB.Для обеспечения высокой доступности я использую кластер Galera, поэтому у меня запущены и работают 3 узла MySQL Master: master1 , master2 и master3 .

Согласно connectionstring.com Я должен иметь возможность использовать следующую строку подключения:

Server=master1, master2, master3;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;

Я пробовал выше, и это не работает ... Я видел эта ошибка , объясняющая, что строка соединения с несколькими хостами не работает.


Вопрос

Согласно эта ссылка Я могу использовать mysql:loadbalance:перед моей строкой соединения JDBC.Проблема в том, что я не знаю , какой MySQL Connector я использую ?Я считаю, что я установил стандартные / стандартные пакеты Nuget для .net ( MySQL.Data и MySQL.Data.EntityFramework ).Любая идея, что MySQL Connector поставляется с вышеуказанными пакетами?

Любая идея, как я могу использовать MySQL Connector для балансировки нагрузки / подключения 3 главных узлов?

1 Ответ

1 голос
/ 24 мая 2019

Это не поддерживается MySQL.Data. Как вы заметили, есть несколько сообщений об ошибках ( # 81650 , # 88962 ), указывающих на эту проблему, но она не была исправлена ​​в течение трех лет.

Как здесь объяснено , существует альтернативная библиотека MySQL, MySqlConnector , которая поддерживает этот синтаксис строки подключения. К сожалению, для него нет библиотеки EF6. (Существует пакет EF.Core, Pomelo.EntityFrameworkCore.MySql .)

Обходным путем будет создание балансировщика нагрузки 4-го уровня перед вашими тремя узлами Galera. Galera предоставляет документацию по , как это сделать с помощью HAProxy . Ваш клиент C # MySQL будет подключаться к HAProxy, и он будет загружать соединения баланса между вашими серверами Galera.

...