2015-04-02 2 views
0

Я запускаю MySQL как базу данных на экземплярах Ubuntu. Я использую репликацию Master-Slave MySQL, где изменения мастера будут записаны на ведомые устройства, а изменения подчиненного устройства не будут отражены в главном. Хорошо. Я использую HAProxy load balancer для передних экземпляров MySQL, где все запросы будут отправляться на master-экземпляр MySQL. Если основной экземпляр MySQL отключен, подчиненный экземпляр MySQL будет выступать в роли мастера, и HAProxy отправит все запросы на сохранение. Активно-пассивный сценарий.Репликация Master-Slave MySQL Когда мастер отсутствует

HAProxy - 192.168.A.ABC 
MySQL Master - 192.168.A.ABD 
MySQL Slave - 192.168.A.ABE 

Предположим, что мастер MySQL (192.168.A.ABD) не работает. Теперь все запросы будут отправляться в подчиненный MySQL (192.168.A.ABE) с помощью HAProxy, где теперь он действует как главный сервер MySQL на данный момент.

Мои проблемы

  • Что происходит, когда оригинальный мастер MySQL экземпляр (192.168.A.ABD) вверх?
  • Будут ли реплицироваться изменения в новый мастер MySQL (192.168.A.ABE) на исходный мастер (192.168.A.ABD)?

Как я должен рассматривать этот сценарий?

ответ

1

Прежде всего, я должен сказать, что я никогда не использовал HÃ Proxy так con't комментарий об этом прямо.

Однако в вашей текущей настройке Master (ABD) не синхронизируется и не догонит. Вам придется перестроить, используя mysqlDump или аналогичный инструмент.

Что вам нужно, это установка Master < > Master (в отличие от Master > Slave), которая позволяет вам писать в любую базу данных и отражать ее в другой. Это не так прямо, как кажется.

Предполагая, что у вас уже есть настройки master > slave, и они находятся в синхронизации

На Master (ABD) вы хотите добавить:

auto_increment_increment=2 
auto_increment_offset=1 
log-slave-updates 

на ведомом (ABE) добавить:

auto_increment_increment=2 
auto_increment_offset=2 
log-slave-updates 

в ваши файлы my.cnf. Перезапустите базу данных. Это поможет предотвратить Duplicate Key Errors. (Нотабенечто log-slave-updates не является обязательным требованием, но облегчает добавление другого подчиненного устройства в будущем)

Далее вы хотите сообщить Мастеру (ABD), чтобы он был реплицирован из подчиненного устройства (ABE).

В зависимости от того, какая версия MySQL и если вы используете GTID и т. Д., Точный процесс немного отличается. Но в основном вы собираетесь выпустить инструкцию CHANGE MASTER на Master, чтобы она копировала с ведомого.

И уходите. Вы, вероятно, хотите избежать написания и того, и другого одновременно с тем, что открывает еще один чайник из рыбы. Но если мастер уходит, вы можете переключить свои записи на подчиненный, и когда мастер вернется, он просто начнет реплицировать недостающие данные.

+0

Спасибо за разоблачение путаницы – Techie

-1

Я рассматриваю вас сценарий

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

Вы не можете напрямую добавлять мастера в системе. Чтобы добавить мастер в систему, вам необходимо выполнить следующие шаги: 1) Когда мастер поднят, вы можете добавить это как подчиненный. Так что теперь это происходит

Master - 192.168.A.ABE 
Slave - 192.168.A.ABD 

2) Затем теперь U можно положить мастер вниз. Средства Вы можете положить 192.168.A.ABD Вниз 3) Затем снова Добавить это как раб. Так После этого вы получите ниже scenarion

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

Вы можете обратиться эту ссылку https://dev.mysql.com/doc/refman/5.5/en/replication-solutions-switch.html

+0

Пожалуйста, снова прочитайте вопрос – Techie

Смежные вопросы