Spec-Zone.ru › MySQL 5.7

16.3.10 Задержка репликации

MySQL 5.7 поддерживает задержку репликации, при которой сервер-реплика намеренно отстаёт от источника по крайней мере на заданное количество времени. По умолчанию задержка составляет 0 секунд. Используйте параметр MASTER_DELAY для CHANGE MASTER TO, чтобы установить задержку в N секунд:

CHANGE MASTER TO MASTER_DELAY = N;

Событие, полученное от источника, не выполняется до тех пор, пока не пройдёт по крайней мере N секунд после его выполнения на источнике. Исключением являются события описания формата и события вращения файлов журнала, которые влияют только на внутреннее состояние потока SQL.

Задержка репликации может быть использована для нескольких целей:

  • Для защиты от ошибок пользователя на источнике. Администратор базы данных может откатить задержанную реплику к времени непосредственно перед катастрофой.

  • Для проверки поведения системы при наличии задержки. Например, в приложении задержка может быть вызвана высокой нагрузкой на реплику. Однако сложность состоит в генерации такого уровня нагрузки. Задержка репликации может моделировать задержку без необходимости моделирования нагрузки. Она также может использоваться для отладки условий, связанных с отставанием реплики.

  • Для проверки того, как база данных выглядела давно, без необходимости перезагрузки резервной копии. Например, если задержка составляет одну неделю, а администратору базы данных необходимо увидеть, как база данных выглядела до последних нескольких дней разработки, задержанную реплику можно проверить.

START SLAVE и STOP SLAVE вступают в силу немедленно и игнорируют любую задержку. RESET SLAVE сбрасывает задержку до 0.

SHOW SLAVE STATUS содержит три поля, которые предоставляют информацию о задержке:

  • SQL_Delay: Положительное целое число, указывающее количество секунд, которое реплика должна отставать от источника.

  • SQL_Remaining_Delay: Когда Slave_SQL_Running_State равно Waiting until MASTER_DELAY seconds after master executed event, это поле содержит целое число, указывающее оставшееся количество секунд задержки. В других случаях это поле равно NULL.

  • Slave_SQL_Running_State: Строка, указывающая состояние потока SQL (аналогично Slave_IO_State). Значение идентично значению State потока SQL, отображаемому SHOW PROCESSLIST.

Когда поток репликации SQL ждёт истечения задержки перед выполнением события, SHOW PROCESSLIST отображает его значение State как Waiting until MASTER_DELAY seconds after master executed event.

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

Spec-Zone.ru

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