Назад | Перейти на главную страницу

Отказоустойчивость MySQL в Windows с доступной SAN

Компоненты моего бэк-офиса выполняют запросы MySQL. Мне нужно обеспечить высокую доступность MySQL (в Windows). У меня есть SAN, где я буду хранить файл БД.

Вот о чем я думал.

Я установлю 2 машины Windows с MySQL, указывающим на общий файл db. Один будет активным, другой пассивным (служба MySQL остановлена). Что мне в основном нужно, так это связь между двумя машинами, и когда одна из них не работает, другая фактически запускает службу MySQL.

Это правильный подход? Если да, то есть ли какой-нибудь продукт / открытый исходный код, который может помочь мне настроить эту среду?

Если я использую две разные машины в таком активном / пассивном режиме - как мои клиенты будут подключаться? Должны ли они изменять свои строки подключения (в основном IP-адрес / имя компьютера) в зависимости от текущего активного компьютера.

Спасибо

Я бы не стал использовать одни и те же файлы для обеих баз данных. На самом деле, если я припоминаю, NTFS не позволит вам этого сделать, потому что вы не можете получить доступ к уже «открытому» файлу. Это может сработать, если вы экспортируете его по сети, но в целом это не лучшая идея.

Я бы предложил плавающий IP-адрес для сервера, какое-то промежуточное программное обеспечение, которое переместит этот IP-адрес в другую систему (или устанавливает IP / включает настроенное устройство на вторичной системе, если первичная выходит из строя). Затем я бы установил отношения Master / Slave или Master Master. В зависимости от того, как вы настроены, настройка Master / Master может быть чем-то, что вы не хотите делать (в основном позволяет вам писать / вставлять как на первичном, так и на вторичном серверах и видеть изменения в обеих базах данных). Из того, что я изначально прочитал, с прямым мастером-рабом все должно быть в порядке. Подробнее о репликации здесь:

http://dev.mysql.com/doc/refman/5.0/en/replication.html

Похоже, вы хотели бы попробовать кластеризацию MySQL с помощью Microsoft Cluster Services (MSCS). Из моего быстрого поиска я не уверен, насколько хорошо MySQL работает с MSCS, но я нашел Руководство по MySQL для отказоустойчивой кластеризации Microsoft Windows Server 2008.

MySQL имеет свою собственную кластеризацию, но похоже, что она есть только в развитие для Windows в версии 7.

Это неплохой подход к проблеме. Я не знаю, что бы вы использовали для этого в Windows, но в Linux программное обеспечение, которое вы, скорее всего, использовали бы, на самом деле называется «Heartbeat». Я почти уверен, что он не работает в Windows, но я был бы удивлен, если бы кто-то не создал что-то подобное (хотя это, вероятно, будет стоить вам куска). Лично я бы сэкономил на расходах и неудобствах и использовал Linux для запуска моих серверов MySQL, но я ожидаю, что это не в ваших руках.

Что касается переключения клиентов на отказ, вы должны сделать это, предоставив «виртуальный IP-адрес», который отличается от тех, которые постоянно назначаются каждой машине, а служба пульса будет следить за тем, чтобы на любой машине, на которой в настоящее время работает MySQL, также была настроена использовать виртуальный IP-адрес для службы. Затем вы настраиваете клиентов для подключения к этому виртуальному IP-адресу или DNS-имени, которое указывает на этот виртуальный IP-адрес, и, следовательно, событие аварийного переключения выполняется без проблем для клиентов (за исключением того, что они должны повторно подключаться).