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

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

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

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

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

решение1

У вас есть 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. Выбросьте М1 и М2. Теперь у вас есть только М3 -> М4.
  6. (кратковременное нарушение) Настройте двойной Мастер (M3 <=> M4); перераспределите клиентов по своему усмотрению.

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

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

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

Связанный контент