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

Обновления репликации MySQL 'Catchup' поддерживают новые записи

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

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

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

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

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

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

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

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