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