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

Репликация MySQL Master-Slave

Я пытаюсь настроить репликацию MySQL с высоким уровнем доступности master-slave. Я планирую иметь два сервера в разных сетях, один из которых будет работать как главный, а другой - как подчиненный:

     A           B
 10.0.1.0/24 | 10.0.2.0/24
__________________________
 Master -----|---> Slave
 10.0.1.20   | 10.0.2.20

Мои серверы приложений будут подключаться (и выполнять запись mysql) 10.0.1.20 если система полностью работоспособна.

В состоянии аварийного переключения ведомое устройство будет повышено, а ведущее устройство отключено следующим образом:

     A           B
 10.0.1.0/24 | 10.0.2.0/24
__________________________
 (DOWN)      | Master
 10.0.1.20   | 10.0.2.20

Итак, сервер A сейчас не работает и B был повышен до уровня мастера MySQL. Однако мне нужно, чтобы мой сервер приложений знал, что B был продвинут, и все будущие записи должны быть сделаны 10.0.2.20.

Это тривиально для случая, когда есть только один ведущий и один ведомый, однако как с этим поступать, если есть один ведущий и 3 ведомых? Как приложение PHP узнает, на какой сервер mysql писать? Мне нужно, чтобы продвижение подчиненного сервера mysql было автоматическим и происходило в течение 5 секунд. Я не могу сделать так, чтобы оба сервера использовали общий виртуальный IP-адрес с использованием тактового сигнала, потому что они находятся в двух разных сетях в совершенно разных физических местах.

Как это аварийное переключение обычно выполняется с аналогичными топологиями?

Используйте keepalived, ucarp, heartbeat или что-то подобное, чтобы иметь виртуальный главный IP-адрес, который будет отвечать на приложения php.