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.