URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 76438
[ Назад ]

Исходное сообщение
"Master-Master Mysql. Наверное."

Отправлено astashov , 26-Сен-07 23:29 
Здравствуйте.
Имеется у меня следующая задача.
Есть два сервера. И они с помощью CARP держат один IP адрес. Но не балансировка, а зеркало.
Это сервера БД.
Когда первый сервер отключаем, то пользователь прозрачно переходит на второй сервак(ip адрес тот-же, данные те же). И соответственно данные должны быть тоже актуальные. Т.е. такие же как на головном сервере за секунду до отключения  
Причем, когда подключаем первый сервер(он будет уже в роли вторичного), он переливает данные с головного сервака к себе.

Я подозреваю, что надо настраивать Мастер-Мастер репликация между двумя серверами. Так как на кластер надо 3 и более машин, то для меня это не подходит.

Так реально ли составить такую комбинацию на двух серваках MySQL?
Если можно, то дайте пожайлуста ссылочку на разяснение или примеры конфигов.
Если непонятно описал свои мыслю, то прошу прощения. Просто решение очень нужно, а сам что-то додуматься не могу.

Пробывал гуглить. Не получилось.

Спасибо.

================
OS: FreeBSD 6.2
DB: MySQL 5.1.21


Содержание

Сообщения в этом обсуждении
"Master-Master Mysql. Наверное."
Отправлено johnjoy , 27-Сен-07 00:48 
ну для начала - "правильное" решение: shared storage. Все остальное, в общем-то, на данный момент выглядит больше костылями.

master-master, насколько знаю (может кто поправит), в реализации мускула - штука своеобразная. смысл такой - запись ведется одновременно на оба сервера, уже после записи данные отправляются соседнему, как в master-slave репликации. То есть можете писать статистику (и тут вроде как эта схема использования мускула с master-master оправданна), но сильно конкурентную запись делать нежелательно. Ну и технология эта неотработанная толком.

затем - зачем вам это?
если вопрос просто о HA, то ситуация с последовательным (быстрым) падением 2х серверов малореальна. Если же один упал - то это уже критическая ситуация, которую нужно руками решать. Почему бы просто не сделать master-slave, а дальше все ручками? http://dev.mysql.com/doc/refman/5.1/en/replication-solutions... (заодно посмотрите коммент)
CARP тоже не обеспечивает моментальной реакции.
То есть делаете скрипт, который отслеживает состояние мастера (на самом деле, думаю, что лучше тут следить за состоянием carp-интерфейса) и если жопа, то отрабатывать failover ситуацию.
Упадет сервак #1 - ваш скрипт переведет #2 в режим мастера (получите пару таймаутов на запросы, причем это вам обеспечит даже момент переключения CARP), вы ручками поднимете #1, затем сделаете его новым слейвом, отсинхонизируете, все проверите. При большом желании, можно и отскриптовать в полный автомат, только нафик это надо - если упала БД - значит уже плохо и надо смотреть в чем дело.

На чудеса не надейтесь - у вас 2 мускула, которые будут работать с 2мя физически разнесенными экземплярами данных. CARP - это из другой стези, там мегабайты данных в транзакциях не прокидывать.