Чтобы свести к минимуму вероятность сбоя репликации, рекомендуем установить следующие параметры:
• innodb_flush_log_at_trx_commit = 1. Хотя, строго говоря, он и не является параметром репликации, но гарантирует, что при каждой транзакции журналы записываются на диск и синхронизируются. Этот параметр является полностью совместимым с ACID, обеспечивая максимальную защиту ваших данных — даже при репликации. Это связано с тем, что сначала фиксируются события двоичного журнала, а затем выполняется коммит транзакции и запись на диск. Установка этого значения равным 1 увеличит количество операций записи на диск, обеспечивая при этом долговременное хранение данных;
• sync_binlog = 1. Переменная определяет, как часто MySQL синхронизирует двоичные данные журнала с диском. Присвоение ей значения 1 означает синхронизацию перед каждой транзакцией. Это защищает от потери транзакций в случае сбоя сервера. Как и предыдущий параметр, этот увеличит количество операций записи на диск;
• relay_log_info_repository = TABLE. Репликация MySQL использовала файлы на диске для отслеживания позиции репликации. Это означало, что транзакции, завершенные репликацией, должны были синхронизироваться с диском в качестве второго шага. Если между фиксацией транзакции и синхронизацией произойдет сбой, файл на диске будет иметь неверный файл и неправильную позицию. Эта информация переместилась в таблицы InnoDB в самой MySQL, что позволяет репликации обновлять как транзакцию, так и информацию журнала ретрансляции в рамках одной и той же транзакции. Это создает атомарное действие и помогает в восстановлении после сбоя;
• relay_log_recovery = ON. Проще говоря, relay_log_recovery отбрасывает все локальные журналы ретрансляции при обнаружении сбоя и извлекает недостающие данные из источника. Это гарантирует, что любые поврежденные или неполные журналы ретрансляции на диске, которые могли возникнуть в результате сбоя, могут быть восстановлены. Этот параметр также устраняет необходимость использования sync_relay_log, поскольку в случае сбоя журналы ретрансляции удаляются. Нет необходимости выполнять лишние операции по их синхронизации с диском.