Дублирование данных между двумя кластерами Percona Xtradb с использованием репликации MySQL

В настоящее время у нас есть 3-х узловый кластер Percona Xtradb, работающий в одном центре обработки данных. Мы хотим добавить отказоустойчивость в случае аварии, чтобы предотвратить зависимость от одного центра обработки данных и синхронизировать наши данные Percona со вторым центром обработки данных, чтобы мы могли легко переключать наши приложения для подключения к новому синхронизированному кластеру в случае такого событие.

Хотя я знаю, что могу просто добавить дополнительные мастер-узлы во многие центры обработки данных, мы не можем пожертвовать увеличением времени двусторонней записи центра обработки данных в другом месте. Вместо этого мне было интересно, если это можно сделать с репликацией MySQL. Я думаю настроить это следующим образом:

Основной узел Percona из 3 узлов -> БД реплики MySQL -> Вторичный кластер Percona из 3 узлов

Хотя я понимаю, что возможна небольшая задержка реплики, и данные могут быть не синхронизированы на несколько секунд, это компромисс, который мы готовы сделать. При такой настройке нам было бы легко переключать кластеры одним щелчком мыши.

У меня есть несколько вопросов:

  1. Это плохая идея? Лично я не вижу здесь серьезных недостатков, но я что-то упустил?
  2. Возможно ли для подчиненной реплики MySQL получать данные (из основного кластера Percona) и записывать данные (во вторичный кластер Percona)?
  3. Что произойдет, если основной кластер Percona выйдет из строя и мы начнем использовать / записывать данные во вторичный кластер Percona? Когда основной Percona Cluster возвращается, как мы можем легко синхронизировать его с новыми данными из вторичного Percona Cluster? Можем ли мы просто (временно) создать кластер из 6 узлов, и Percona выполнит эту работу?

Я знаю это много вопросов, но большое спасибо за вашу помощь!

1 ответ

Кластер -> MySQL -> Кластер работает. Хотя я сам не пробовал, я знаю, что Cluster->Cluster должен был стать опцией Soon™ несколько месяцев назад, так что вы можете пропустить промежуточный этап. Из PoV of PXC вы порабощаете себя с одной из машин, а другие машины порабощают себя на вас; вы не столько "получаете и записываете данные", сколько получаете данные и разрешаете получать данные от вас, если это различие имеет смысл.

Для повторной синхронизации просто настройте как мастер-мастер с ручной настройкой auto_increment_increment а также auto_increment_offset на каждом из кластеров. Возможно, это просто, но в худшем случае это будет означать ограничение auto_increment_{increment,offset}, выбранного PXC, которое будет небольшим патчем.

Бонусные баллы: для максимальной скорости репликации изменить (с sql_log_bin=0 в сеансе!!!) ваши таблицы в промежуточной базе данных, чтобы использовать черный двигатель.

Другие вопросы по тегам