Spec-Zone.ru › MySQL 9.2

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

Безопасно останавливать сервер источника репликации и перезапускать его позже. Когда реплика теряет соединение с источником, она пытается сразу же подключиться снова и периодически повторяет попытки, если это не удаётся. По умолчанию попытки повторяются каждые 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.32, «Репликация и временные таблицы». Некорректные остановки могут привести к проблемам, особенно если кэш диска не был выведен на диск до возникновения проблемы:

  • Для транзакций реплика подтверждает и затем обновляет 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-9.2-en/replication-features-shutdowns.html

Spec-Zone.ru

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