Можно ли настроить MySql Replication, чтобы один подчиненный слушал двух разных мастеров?
источник
Можно ли настроить MySql Replication, чтобы один подчиненный слушал двух разных мастеров?
По замыслу, один процесс mysqld не может одновременно слушать двух разных мастеров.
Команда CHANGE MASTER TO позволяет вам установить только один Master в качестве источника для чтения.
Чтобы подражать этому, вам придется программно переключаться между двумя Мастерами. Как ты это делаешь ?
Вот основная идея
Настройте репликацию M1 на S1 и затем M2 на S1 следующим образом
Каждый раз, когда вы переключаетесь с одного мастера на другой, вы должны записать два значения из SHOW SLAVE STATUS\G
Эти два значения представляют собой последний оператор SQL, который поступил от мастера и должен был быть выполнен на ведомом устройстве.
Есть одно важное предостережение: пока M1 и M2 обновляют взаимоисключающие базы данных, этот алгоритм должен быть в порядке.
Хотите верьте, хотите нет, но я обратился к такому вопросу в ServerFault еще в мае 2011 года. На самом деле я объяснил, как эмулировать настоящего мультимастера / одного подчиненного с помощью BLACKHOLE Storage Engine, основанного на книге «High Performance MySQL».
Решение Роландо имеет много предостережений. Первый, являющийся одним потоком реплик, обязательно не реплицируется, в то время как другой работает. Это даст вам периоды времени, когда ваш раб не синхронизирован. Теперь вам нужно сыграть деликатный баланс, чтобы у каждого было достаточно времени, чтобы наверстать упущенное, когда у него есть «ход».
Как описано выше, вы также должны сыграть бухгалтера в позиции журнала, чтобы переключиться обратно. Это на самом деле просто кажется ошибочным, открывая окно для пропущенных или несогласованных данных или даже прерывая репликацию, когда она идет не так (либо из-за ошибки «просто один» в позиции журнала)
Я бы порекомендовал просто запустить несколько экземпляров MySQL. Ничто не мешает вам запускать два или более mysql на одной машине. Разумеется, они не могут работать на одном и том же порту. Однако я не вижу в этом проблемы, поскольку каждый клиент и библиотека позволяет вам указать что-то отличное от 3306.
Просто укажите port = 3307 (или что-то еще в одном из файлов .cnf).
Вы также должны позаботиться о том, чтобы индивидуально настроенные пулы буферов и другие конфигурации памяти не расходились друг с другом. На самом деле это является преимуществом, поскольку вы можете более точно настроить эти параметры в соответствии с конкретными требованиями к реплицируемым базам данных.
Таким образом, у вас есть только два потока репликации на одном сервере; никогда не позади, не требуется бухгалтерский учет, не требуется сценарий «подкачки».
источник
Fan in (многоисточниковая репликация) будет поддерживаться с MySQL 5.7.
Лабораторная версия доступна здесь: http://labs.mysql.com/
источник
MariaDB, который может быть использован в качестве замены на месте для MySql. Поддерживает его с версии 10.2
Проблема с поддержкой Mysql 5.7 заключается в необходимости использования GTID, что означает, что мастер ДОЛЖЕН быть также изменен, в случае MariaDb это не так.
Пример / HowTo ссылка: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100
источник