Компоненты моего бэк-офиса выполняют запросы MySQL. Мне нужно обеспечить высокую доступность MySQL (в Windows). У меня есть SAN, где я буду хранить файл БД.
Вот о чем я думал.
Я установлю 2 машины Windows с MySQL, указывающим на общий файл db. Один будет активным, другой пассивным (служба MySQL остановлена). Что мне в основном нужно, так это связь между двумя машинами, и когда одна из них не работает, другая фактически запускает службу MySQL.
Это правильный подход? Если да, то есть ли какой-нибудь продукт / открытый исходный код, который может помочь мне настроить эту среду?
Если я использую две разные машины в таком активном / пассивном режиме - как мои клиенты будут подключаться? Должны ли они изменять свои строки подключения (в основном IP-адрес / имя компьютера) в зависимости от текущего активного компьютера.
Спасибо
Я бы не стал использовать одни и те же файлы для обеих баз данных. На самом деле, если я припоминаю, NTFS не позволит вам этого сделать, потому что вы не можете получить доступ к уже «открытому» файлу. Это может сработать, если вы экспортируете его по сети, но в целом это не лучшая идея.
Я бы предложил плавающий IP-адрес для сервера, какое-то промежуточное программное обеспечение, которое переместит этот IP-адрес в другую систему (или устанавливает IP / включает настроенное устройство на вторичной системе, если первичная выходит из строя). Затем я бы установил отношения Master / Slave или Master Master. В зависимости от того, как вы настроены, настройка Master / Master может быть чем-то, что вы не хотите делать (в основном позволяет вам писать / вставлять как на первичном, так и на вторичном серверах и видеть изменения в обеих базах данных). Из того, что я изначально прочитал, с прямым мастером-рабом все должно быть в порядке. Подробнее о репликации здесь:
Похоже, вы хотели бы попробовать кластеризацию 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-адрес, и, следовательно, событие аварийного переключения выполняется без проблем для клиентов (за исключением того, что они должны повторно подключаться).