MySQL и MariaDB LinuxMySQL 8.0/8.4Percona Server 8.0/8.4

MySQL: Seconds_Behind_Source растёт

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

Для Percona 8.0 и более старых конфигураций могут встречаться названия SHOW SLAVE STATUS/Seconds_Behind_Master. Здесь основная процедура дана для MySQL 8.4; не смешивайте команды разных версий.

В этой статье
  1. Что означает неисправность и в каких условиях возникает
  2. Возможные причины: как различить
  3. Пошаговая диагностика и устранение
  4. Как проверить исправление и что делать, если оно не помогло

#Что означает неисправность и в каких условиях возникает

На реплике MySQL 8.x показатель Seconds_Behind_Source становится всё больше, хотя соединение с источником может оставаться активным. Само значение — приблизительная оценка: нужно проверить оба потока репликации, состояние сети и обработку событий, а не сразу сбрасывать настройки. Для Percona 8.0 и более старых конфигураций могут встречаться названия SHOW SLAVE STATUS/Seconds_Behind_Master. Здесь основная процедура дана для MySQL 8.4; не смешивайте команды разных версий.

#Возможные причины: как различить

Возможная причинаКак узнатьЧто делать
Поток применения не справляетсяРеплика принимает события быстрее, чем выполняет записи на диске.Replica_IO_Running=Yes, Replica_SQL_Running=Yes, но отставание нарастает.Найти долгую транзакцию, блокировки и узкое место диска.
Поток чтения недоступенСеть либо учётные данные не позволяют прочитать новые события.Replica_IO_Running=No, Last_IO_Error непустой.Устранить сеть/доступ без изменения координат репликации.
Остановилось применение из-за ошибкиРеплика не смогла выполнить конкретное событие.Replica_SQL_Running=No, Last_SQL_Error сообщает SQL-ошибку.Выяснить рассогласование данных и восстановить корректно, не пропуская события вслепую.

#Пошаговая диагностика и устранение

  1. Проверьте, что подключились именно к репликеВ терминале сервера-реплики откройте mysql с предоставленными правами на просмотр репликации. Введите SELECT @@hostname, @@version, @@read_only; и сверяйте имя с диаграммой сервиса; read_only сам по себе не гарантирует, что вы на реплике. Не запускайте операции изменения источника, пока не проверена роль сервера.
  2. Снимите полный статус репликацииВ приглашении mysql введите SHOW REPLICA STATUS\G (в MySQL 8.4 требуется право REPLICATION CLIENT). Сохраните, не публикуя секретов, поля Replica_IO_Running, Replica_SQL_Running, Seconds_Behind_Source, Last_IO_Error, Last_SQL_Error, Relay_Log_Space. Если статус не возвращает строки, проверьте конфигурацию и канал; это не доказательство нулевого отставания.
  3. Сравните три измерения, а не одноСделайте снимок статуса сейчас, затем через несколько минут и повторно после типичного пика. Если Seconds_Behind_Source уменьшается, реплика догоняет; если растёт, сопоставьте с активными запросами и объёмом relay log. Значение NULL означает неизвестное состояние, а 0 не всегда доказывает актуальность при сетевых задержках.
  4. Разделите проблемы чтения и примененияПри Replica_IO_Running=No проверьте Last_IO_Error, сетевую доступность источника и действительность сертификата TLS; пароль не публикуйте. При Replica_SQL_Running=No смотрите Last_SQL_Error, но не пропускайте транзакции через sql_replica_skip_counter: это может скрыть расхождение данных и осложнить восстановление.
  5. Найдите задерживающую транзакциюЕсли оба потока Yes, на реплике выполните SHOW FULL PROCESSLIST и по доступным таблицам performance_schema проверьте состояние применяющих потоков. Сопоставьте длительные блокировки и дисковую задержку. Большая единичная транзакция может создавать скачкообразное отставание, даже если нет непрерывной очереди запросов.
  6. Исключите плановую задержкуВ SHOW REPLICA STATUS проверьте SQL_Delay и SQL_Remaining_Delay. Если настройка задержки выставлена намеренно, рост Seconds_Behind_Source может быть ожидаемым. Не выключайте механизм отложенной репликации без согласования: такая реплика может быть частью защиты от случайных удалений.
  7. Согласуйте безопасное устранение узкого местаЕсли медленный диск и блокировки подтверждены, освободите ресурсы, уменьшите конкурирующие фоновые задачи и исправьте длительные транзакции в приложении. Настройки параллельного применения меняйте только после проверки совместимости и модели транзакций на тестовой реплике, предварительно сохранив конфигурацию. Не пересоздавайте реплику как первый шаг.
  8. Проверьте фактическую синхронизациюПосле исправления вновь соберите три снимка SHOW REPLICA STATUS и сравните позиции чтения/применения и отсутствие ошибок. Критичные данные сверяйте контрольным запросом или проверенным инструментом проверки реплик по согласованной методике. Если статус остаётся NULL или позиции не движутся, передайте DBA полные поля без паролей.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Интерактивный mysql на реплике MySQL 8.4; обратная косая черта G — окончание запроса для вертикального вывода.
    SQLКоманда
    Интерактивный mysql на реплике MySQL 8.4; обратная косая черта G — окончание запроса для вертикального вывода.
    SHOW REPLICA STATUS\G
    Вариант 2Команды для подтверждения сервера и диагностики; SHOW PROCESSLIST с PROCESS позволяет видеть все соединения.
    SQLКоманда
    Команды для подтверждения сервера и диагностики; SHOW PROCESSLIST с PROCESS позволяет видеть все соединения.
    SELECT @@hostname, @@version, @@read_only;
    SHOW FULL PROCESSLIST;

#Как проверить исправление и что делать, если оно не помогло

Результат — оба потока Yes, ошибки пусты, отставание в серии измерений уменьшается до допустимого значения, данные согласованы. Если только число Seconds_Behind_Source стало 0, но при этом IO-поток недоступен, считать проблему решённой нельзя.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.