У меня есть следующая схема репликации Mysql:
А (ведущий) → В (ведомый/ведущий) → С (ведомый)
- A пишет binlog
- B читает Бункер применяет ретранслятор и записывает его собственный binlog
- C читается из B и применяется.
Если по какой-то причине репликация повреждена (A- > B), я могу скопировать B binlog, найти, какая позиция соответствует последней выполненной инструкции B и воспроизвести ее. Является ли порядок транзакций/операторов в журналах bin/relay одинаковым во всей цепочке репликации? (Репликация использует один поток, поэтому он может быть одного и того же порядка.)
Обновить: мне следовало бы спросить: "Является ли порядок операторов/транзакций в binlogs одинаковым во всей цепочке репликации? Можем ли мы воспроизвести любой журнал на любом хосте и переназначить любой подчиненный (c) для овладения (A)" Кажется, что ответ: "Да". Однако официальное подтверждение или документация (исходный код) еще не опубликованы.
UPDATE2: от официальных документов до innodb_support_xa:
Включает поддержку InnoDB для двухфазной фиксации транзакций XA, в результате чего дополнительный флеш-диск для подготовки транзакции. Механизм XA используется внутренне и необходим для любого сервера, на котором включен его двоичный журнал, и принимает изменения в своих данных из более чем одного потока. Если вы отключите innodb_support_xa, транзакции могут быть записаны в двоичный журнал в другом порядке, чем их передает в реальном времени база данных, которая может создавать разные данные, когда бинарный журнал воспроизводится при аварийном восстановлении или в ведомом репликации.