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

Как перенести систему репликации master / master mysql на новую систему

Я использую систему с двумя машинами, на которых запущен mysql в режиме репликации master / master.

Я хотел бы перенести системы на новые машины, которые также выполняют репликацию master / master. Возможно ли это сделать, не удаляя один узел из старого кластера и не заменяя его новым узлом и не создавая новую репликацию с первого нового узла на второй?

Допустим, у нас есть два активных узла node1 и node2, которые выполняют функции master / master, как мне «волшебным образом» переместить кластер на новые узлы, называемые new1 и new2, без слишком длительного простоя.

У вас есть M1 <=> M2; вы хотите получить новое оборудование M3 <=> M4.

  1. (кратковременное прерывание) Переместите всех клиентов (писателей и читателей) в M2.
  2. Удалите M1 достаточно долго, чтобы клонировать его, чтобы получить M3 в этой топологии: M1 <=> M2 -> M3. (M3 - это просто раб M2.)
  3. Постройте M4 из M3: M1 <=> M2 -> M3 -> M4. (M3 еще не используется, так что сбоев нет.)
  4. (кратковременное прерывание) Переместите всех клиентов из M1 и M2 так, чтобы они указывали на M3. В процессе этого убедитесь, что вся репликация произведена как минимум до M3.
  5. Jetison M1 и M2. Теперь у вас есть только M3 -> M4.
  6. (кратковременное прерывание) Установить двойной мастер (M3 <=> M4); переставьте клиентов как хотите.

Обратите внимание, что каждое из трех сбоев эквивалентно выходу из строя мертвого Мастера.

Общая рекомендация при использовании Dual-Master: запись только на один из двух серверов; другой используйте как резервную копию плюс масштабирование чтения.

Еще лучше переключиться на кластер Galera (или кластер InnoDB), чтобы получить автоматическое переключение при отказе и т.д. Это позволит будущим изменениям топологии быть еще менее болезненными. Такие миграции были бы аналогичный к тому, что я только что описал.