DBAtlas · Атлас эксплуатации баз данных

Реплика сломана / нужна повторная синхронизация

Синхронизация между репликой/standby и первичным сервером нарушена. Определите, остановлена ли репликация, насколько велико отставание и нарушена ли цепочка позиций/GTID; затем выберите правильный путь: пропуск ошибки, ожидание или пересоздание (reseed). Включает предупреждение о split-brain.

Каково общее состояние репликации?

Сначала оцените состояние репликации: работают ли потоки применения, насколько велика задержка, есть ли ошибка? Также убедитесь, что оба узла не принимают запись одновременно (split-brain).

SHOW REPLICA STATUS\G
-- Check: Replica_IO_Running, Replica_SQL_Running, Seconds_Behind_Source, Last_Error, Retrieved/Executed_Gtid_Set
  • Репликация остановлена / завершается с ошибкой
  • Работает, но сильно отстаёт (большая задержка)
  • GTID/позиция нарушены, несогласованность — пересоздать
  • Оба узла пишут как первичные (подозрение на split-brain)

Можно ли исправить ошибку или нужно пересоздание?

Изучите ошибку применения. Некоторые ошибки (дубликат ключа, отсутствующая строка) можно устранить безопасным пропуском одного события; но при несогласованности/повреждении данных единственный правильный путь — пересоздать реплику.

SHOW REPLICA STATUS\G
-- Check: Last_SQL_Errno, Last_SQL_Error, Last_IO_Errno, Last_IO_Error
  • Одна/несколько ошибок применения (можно пропустить)
  • Неустранимая несогласованность / повреждение

Задержка временная или постоянная?

Посмотрите на динамику задержки во времени. Она сокращается (реплика догоняет) после временного всплеска нагрузки или продолжает расти, так что реплика никогда не догонит первичный сервер?

SHOW REPLICA STATUS\G
-- Measure Seconds_Behind_Source several times: is it decreasing or increasing?
  • Временный всплеск нагрузки; задержка сокращается
  • Продолжает расти; догнать не удаётся

Решение: осторожно пропустите ошибку применения

Если репликация остановилась из-за одной ошибки применения (например, дубликат ключа) и вы уверены, что данные действительно согласованы, можно пропустить это событие и продолжить поток. Это крайняя мера; слепой пропуск создаёт скрытое расхождение данных.

Решение: пересоздайте реплику (reseed / rebuild)

Если цепочка позиций/GTID нарушена, данные разошлись или ошибка неустранима, единственный надёжный путь — пересоздать реплику из свежей копии, снятой с первичного сервера.

Первопричина: временный всплеск нагрузки (задержка сокращается)

Репликация исправна; задержка возникла из-за временного всплеска записи на первичном сервере или колебаний сети, но реплика догоняет.

Первопричина: реплика не успевает за первичным сервером

Сторона применения (apply/redo) не успевает за скоростью изменений на первичном сервере; задержка продолжает расти. Обычно причина — однопоточное применение, медленное оборудование реплики или узкое место в сети.

ВНИМАНИЕ: split-brain (два первичных) — риск потери данных

Если оба узла принимают запись в роли первичного, на обеих сторонах накапливаются конфликтующие изменения; это самая опасная ситуация, которая может привести к потере данных. В первую очередь сведите запись к одному узлу.

Открыть в DBAtlas →