MySQL кластер.NET клиентское соединение, какой хост

Я пытаюсь использовать MySQL кластер в проекте для нашего клиента.

Конфигурация, которую я настроил, следующая:

**Hardware S.O. equipment**
Server1 - S.O. Windows 2008 R2 64bit 
Server2 - S.O. Windows 2008 R2 64bit 
Client1 - S.O. Windows 7 64bit 
Client2 - S.O. Windows 7 64bit 

UserClient2 - S.O. Windows 7 64bit 
UserClient3 - S.O. Windows 7 64bit 
UserClient4 - S.O. Windows 7 64bit 
UserClient5 - S.O. Windows 7 64bit 
UserClientXX - S.O. Windows 7 64bit (where XX is less than 15) 

My Sql Cluster Configuration Server1 - выступать в качестве узла данных кластера 1 Server2 - выступать в качестве узла данных кластера 2 Server1 - выступать в качестве узла 1 mysql (теперь MYSQL-D1) Server2 - выступать в качестве узла 2 mysql (теперь MYSQL-D2) Client1 - выступать в качестве узла 1 управления кластером mysql Client2 - выступать в качестве узла 2 управления кластером mysql

Конфигурация клиентского приложения У следующих клиентов (теперь CLIENTAPP): Client1, Client2, UserClient2, .., UserClientXX есть приложение Microsoft .Net, которое взаимодействует с кластерной базой данных mysql.

Через некоторое время конфигурация кластера My sql, кажется, работает правильно, и любой из CLIENTAPP может подключиться к MYSQL-D1 или MYSQL-D2 (это возможно, изменив строку подключения клиентского приложения.NET и указав на IP-адрес MYSQL-D1 или на IP MYSQL-D2).

В идеальном мире CLIENTAPP автоматически может подключиться к нужному серверу (MYSQL-D1 или MYSQL-D2), практически: - если MYSQL-D1 не работает, CLIENTAPP подключиться к MYSQL-D2 - если MYSQL-D2 не работает, CLIENTAPP подключиться к MYSQL -D1

Как клиентское приложение.NET может взаимодействовать с кластером mysql?

Лучшие решения, которые я нашел для моего сценария, следующие: 1. использовать прокси-сервер mysql, но он находится на стадии альфа, и я не могу использовать его в рабочей среде 2. установить узел данных кластера на каждом CLIENTAPP 3. использовать строку подключения которые поддерживают несколько серверов (я не знаю, поддерживается ли это MySQL соединителем.NET) 4. переписать мое приложение для взаимодействия с обоими узлами MYSQL-DX (чего я хочу избежать)

Есть ли правильные решения? Какой из них лучший?

Спасибо

1 ответ

Ваша конфигурация больше похожа на мультимастер, чем на кластер: в кластере узлы данных и клиенты (обычно серверы mysql) подключаются к узлу управления, который обрабатывает прибытия и отправления узлов.

Затем вы просто подключаетесь к любому из ваших серверов MySQL и запускаете операторы SQL.. которые обрабатываются узлами данных для таблиц в NDBCLUSTER. Но в этом случае вы не получаете прибыль от власти NDBApi. Просто его возможности балансировки нагрузки.

Возможно, стоит взглянуть на мультимастерную репликацию mysql, DRDB или кластер percona xtradb.

К сожалению, похоже, что у mysql C# не так много опций балансировки нагрузки, но, может быть, вы можете закодировать обертку вокруг объекта подключения Mysql.

В примечании к дополнительному узлу есть очень мощные драйверы для Java и C++, которые позволяют напрямую подключаться к узлам данных, обходя sql для обычных операций CRUD и обеспечивая огромный выигрыш в производительности. Думаю, сообществу пора создать драйвер.Net NDBCluster.

Другие вопросы по тегам