Один хороший способ добиться чего-то подобного - настроить репликацию Master-Master или кольцевую репликацию. Это не следует путать с MultiMaster Replciation.
Настроить кольцевую репликацию на самом деле очень просто, если у вас есть настройка Master-Slave Replication. Вот что вам нужно сделать, чтобы настроить его.
В этом примере мы будем предполагать, что репликация Master-Slave активна, но у вас будет некоторое время простоя (1-2 минуты):
Шаг 1) Добавьте эту строку в /etc/my.cnf на Мастере.
войти рабское обновление
Шаг 2) Добавьте эти строки в /etc/my.cnf на подчиненном устройстве:
log-bin = mysql-bin (или иметь то, что мастер имеет для этого) log-slave-updates
ВНИМАНИЕ: Вот краткий момент простоя !!!
Шаг 3) На ведомом, перезапуск службы mysql
Это активирует двоичные журналы на ведомом
Шаг 4) На Мастере, остановка службы mysql
Шаг 5) Используйте rsync, чтобы скопировать папку / var / lib / mysql Ведомого в Мастер.
ВНИМАНИЕ: Вот и более длительный момент простоя !!!
Шаг 6) На ведомом, остановка службы mysql
Шаг 7) На ведомом устройстве найдите последний двоичный журнал
Шаг 8) На ведомом устройстве выясните размер файла последнего двоичного журнала
Шаг 9) Используйте rsync, чтобы скопировать папку / var / lib / mysql Ведомого в Мастер. Это должно быть более быстрой копией.
Шаг 10) На
ведущем устройстве отредактируйте строку 2 master.info с последним двоичным журналом ведомого устройства.
Строка 3 из master.info с размером файла последнего двоичного журнала ведомого устройства.
Строка 4 из master.info с IP Ведомого.
Строка 5 - это идентификатор пользователя пользователя репликации (НЕ ПРИКАСАЙТЕСЬ)
Строка 6 - это пароль пользователя репликации (НЕ ПРИКАСАЙТЕСЬ)
Шаг 11) Удалите все двоичные журналы и двоичный индексный файл журнала Мастера.
Шаг 12) На Slave запустите службу mysql, подождите 15 секунд
Шаг 13) На Мастере запускается служба mysql
Шаг 14) На Мастере запустите STOP SLAVE; ПОКАЗАТЬ МАСТЕР СТАТУС;
Шаг 15) На ведомом устройстве запустите команду CHANGE MASTER TO MASTER_HOST = 'IP подчиненного устройства', MASTER_USER = 'ИД пользователя-пользователя репликации из шага 10', MASTER_PASSWORD = 'пароль пользователя репликации из шага 10', MASTER_LOG_FILE = 'двоичный журнал из шага 14', MASTER_LOG_POS = LogPos с шага 14.
Шаг 16) На ведомом устройстве запустите START SLAVE;
Шаг 17) На Мастере запустите START SLAVE;
Я выполнил шаги, подобные этому, для другого вопроса StackExchange, на который я ответил .
Попробуйте!
log-slave-updates
если у хозяев не будет дополнительных рабов.Не с асинхронной репликацией, которую предлагает MySQL. Вы только что пришли к общему признанию того, почему репликация MySQL «из коробки» (до 5.5) сама по себе не является решением высокой доступности. Вещи становятся немного лучше с 5.5 с полусинхронной репликацией (http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html), но за счет более медленного времени транзакции, поскольку мастер ожидает Ack от раба.
Если допустить возможность потери данных при отключении мастера не удастся, я бы сказал, что нужна более сложная настройка, чем простой мастер / подчиненный.
Многие известные MySQL люди считали, что репликация Master to Master больше проблем, чем пользы (даже сама MySQL AB больше не рекомендует ее в качестве решения высокой доступности). Итак, я думаю, что использование DRBD для синхронизации активного мастера и пассивного ведомого с использованием копий на уровне блоков - это то, что вам действительно нужно здесь.
источник
ИМХО, во-первых, в конфигурации не с несколькими хозяевами (ведущий / ведомый) ваш ведомый никогда не должен принимать записи. Должен быть настроен slave my.cnf, а сервер запущен с:
Затем, чтобы устранить проблему мастера из-за синхронизации с записываемым ведомым устройством, случайно выполняющим запись, вы должны передать данные на обоих хостах. Если нет столкновения клавиш, вам следует назначить своего бывшего подчиненного хоста мастером и заново создать образ старого мастера как подчиненного хоста, реплицирующего с нового мастера. (здесь могут быть проблемы с данными)
Наконец, если этот сценарий простоя / простоя является даже возможностью в будущем , найдите время, чтобы настроить оба хоста как мультимастерные (журнал, идентификатор сервера, смещения и т. Д.). Это поможет вам в некоторой степени уменьшить простои и простои.
Если вам нужно запустить master / slave , по крайней мере, получите несколько бонусных баллов за разделение пользовательских подключений для чтения и записи в вашем ACL и приложениях.
источник