Spec-Zone.ru › MySQL 8.4

19.5.1.28 Репликация и остановка источника или реплики

Безопасно остановить сервер источника репликации и перезапустить его позже. Когда реплика теряет соединение с источником, она пытается немедленно возобновить соединение и повторяет попытки через определенные промежутки времени, если это не удается. По умолчанию попытки повторяются каждые 60 секунд. Это можно изменить с помощью инструкции CHANGE REPLICATION SOURCE TO. Реплика также способна обрабатывать перебои в сетевом соединении. Однако реплика замечает перебои в сетевом соединении только после того, как не получает данных от источника в течение replica_net_timeout секунд. Если у вас короткие перерывы в работе, вы можете уменьшить значение replica_net_timeout. См. Раздел 19.4.2, «Обработка непредвиденной остановки реплики».

Некорректная остановка (например, сбой) на стороне источника может привести к тому, что двоичный журнал источника будет иметь конечную позицию меньше последней позиции, прочитанной репликой, из-за того, что файл двоичного журнала источника не был записан в окончательный вид. Это может помешать репликации, когда источник снова заработает. Установка sync_binlog=1 в файле my.cnf сервера источника помогает минимизировать эту проблему, поскольку она заставляет источник чаще записывать двоичный журнал. Для максимальной надежности и согласованности в настройке репликации, использующей InnoDB с транзакциями, следует также установить innodb_flush_log_at_trx_commit=1. С этой настройкой содержимое буфера вторичного журнала InnoDB редо записывается в файл журнала при каждом подтверждении транзакции, а файл журнала записывается на диск. Обратите внимание, что с этой настройкой надежность транзакций все еще не гарантируется, потому что операционные системы или аппаратное обеспечение дисков могут сообщать mysqld о том, что операция записи на диск была выполнена, хотя это на самом деле не так.

Безопасная остановка реплики безопасна, поскольку она отслеживает, на каком этапе она остановилась. Однако будьте осторожны, чтобы реплика не имела открытых временных таблиц; см. Раздел 19.5.1.31, «Репликация и временные таблицы». Некорректные остановки могут привести к проблемам, особенно если кеш диска не был записан на диск до возникновения проблемы:

  • Для транзакций реплика подтверждает и затем обновляет relay-log.info. Если между этими двумя операциями произойдет неожиданное завершение, обработка журнала ретрансляции продолжится дальше, чем показывает файл информации, и реплика повторно выполнит события из последней транзакции в журнале ретрансляции после перезапуска.

  • Аналогичная проблема может возникнуть, если реплика обновляет relay-log.info, но серверный хост выходит из строя до того, как запись будет записана на диск. Чтобы минимизировать вероятность этого, установите sync_relay_log_info=1 в файле реплики my.cnf. Установка sync_relay_log_info в значение 0 не приводит к принудительной записи на диск, и сервер полагается на операционную систему, чтобы периодически очищать файл.

Устойчивость вашей системы к таким проблемам значительно повышается, если у вас есть хороший бесперебойный источник питания.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/replication-features-shutdowns.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API