MySQL Replication 'Catchup' ОБНОВЛЕНИЯ ведет более новую запись
У меня есть два кластера MySQL, между которыми настроена репликация Master-Master.
Большинство таблиц основаны на журналах, только вставки и выборки, поэтому у них нет проблем с репликацией.
Тем не менее, у меня есть несколько таблиц, в которых хранится текущая информация о состоянии системы реального времени. Записи в этих таблицах обновляются и имеют поле метки времени, показывающее их последнее обновление.
Когда репликация прерывается, два кластера могут записывать в одни и те же строки.
Можно ли сделать так, чтобы репликация сохраняла записи с самым последним обновленным столбцом?
Если нет (а мое исследование показывает, что это невозможно), какие решения я мог бы использовать вместо этого?
2 ответа
Если вы ищете такой тип детализации транзакций, вам, возможно, придется использовать репликацию на основе строк вместо репликации на основе операторов.
- Репликация на основе операторов (SBR) передает через двоичные журналы / журналы ретрансляции, SQL должен быть выполнен на ведомом устройстве.
- Репликация на основе строк передает фактическое изменение уровня строки через двоичные журналы / журналы ретрансляции. Эти журналы обычно растут намного быстрее, чем SBR.
- Смотрите мой 09 декабря 2011 года в DBA StackExchange и комментарии Аарона Брауна о способности MySQL переключать режимы при наличии небезопасных операторов SQL.
Ситуация, которую вы описываете, называется проблемой расщепления мозга для среды Мастер-Мастер. Это когда два Мастера не знают о существовании друг друга и работают в одиночку, предполагая, что другой Мастер мертв. На самом деле это самая сложная проблема для такого рода настройки высокой доступности. Чтобы правильно справиться с этой ситуацией, администратор должен установить политику, которая определяет, какой Мастер должен быть Мастером, когда два Мастера не могут связываться друг с другом, а затем направляет все соединения БД с Мастером. Обычно это реализуется сценарием, который отслеживает связь и перенаправляет соединения с БД, когда происходит разделение мозга. После этого неудачные транзакции необходимо будет синхронизировать обратно с главной базой данных, которая была отключена. Я видел, что Xeround утверждает, что их служба баз данных предлагает автоматическое развертывание mater-master, которое решает проблему разделения мозга.