MySQL Replication 'Catchup' ОБНОВЛЕНИЯ ведет более новую запись

У меня есть два кластера MySQL, между которыми настроена репликация Master-Master.

Большинство таблиц основаны на журналах, только вставки и выборки, поэтому у них нет проблем с репликацией.

Тем не менее, у меня есть несколько таблиц, в которых хранится текущая информация о состоянии системы реального времени. Записи в этих таблицах обновляются и имеют поле метки времени, показывающее их последнее обновление.

Когда репликация прерывается, два кластера могут записывать в одни и те же строки.

Можно ли сделать так, чтобы репликация сохраняла записи с самым последним обновленным столбцом?

Если нет (а мое исследование показывает, что это невозможно), какие решения я мог бы использовать вместо этого?

2 ответа

Если вы ищете такой тип детализации транзакций, вам, возможно, придется использовать репликацию на основе строк вместо репликации на основе операторов.

Ситуация, которую вы описываете, называется проблемой расщепления мозга для среды Мастер-Мастер. Это когда два Мастера не знают о существовании друг друга и работают в одиночку, предполагая, что другой Мастер мертв. На самом деле это самая сложная проблема для такого рода настройки высокой доступности. Чтобы правильно справиться с этой ситуацией, администратор должен установить политику, которая определяет, какой Мастер должен быть Мастером, когда два Мастера не могут связываться друг с другом, а затем направляет все соединения БД с Мастером. Обычно это реализуется сценарием, который отслеживает связь и перенаправляет соединения с БД, когда происходит разделение мозга. После этого неудачные транзакции необходимо будет синхронизировать обратно с главной базой данных, которая была отключена. Я видел, что Xeround утверждает, что их служба баз данных предлагает автоматическое развертывание mater-master, которое решает проблему разделения мозга.

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