DebeziumReplicationSlotNotAdvancing
Что означает алерт
confirmed_flush_lsn слота debezium_iams не менялся 15 минут. Severity: critical.
Debezium подключён к слоту либо был подключён, но не подтверждает прочитанную позицию. WAL копится. При текущей нагрузке на базу до лимита 10 ГБ остаётся несколько часов, после чего слот будет сброшен.
В норме позиция сдвигается не реже раза в минуту за счёт записи в debezium.heartbeat каждые 10 секунд.
Лейблы алерта: slot_name.
Диагностика (по шагам)
Команды описаны в разделе 2 общего документа: Debezium: устройство и типовые операции.
-
Проверить, что слот активен. Если сработал и DebeziumReplicationSlotInactive, действовать по нему: причина общая.
-
Проверить возраст heartbeat-строки:
SELECT now() - ts AS heartbeat_age FROM debezium.heartbeat WHERE id = 1;
| Результат | Значение | Действие |
|---|---|---|
| больше минуты | Debezium не выполняет heartbeat.action.query |
шаг 3 |
| меньше 30 секунд | запись идёт, но событие не доходит до Debezium | шаг 4 |
- Найти ошибку запроса в логе:
kubectl --context yc-sarex-stage -n debezium logs $POD --since=30m | grep -i -E 'heartbeat|permission denied|debezium\.heartbeat'
Типовые причины: у пользователя debezium нет прав на debezium.heartbeat (после пересоздания пользователя), таблица удалена, задача коннектора не работает.
- Проверить, что таблица входит в publication:
SELECT schemaname, tablename FROM pg_publication_tables WHERE pubname = 'debezium_iams';
В списке должна быть debezium.heartbeat. Если её нет, PostgreSQL не передаёт запись в слот, и Debezium нечего подтверждать.
Как починить
- Нет прав или нет таблицы: восстановить объекты по разделу 7 общего документа.
- Таблицы нет в publication:
ALTER PUBLICATION debezium_iams ADD TABLE debezium.heartbeat;под пользователемsarex. - Задача не работает или зависла: перезапустить задачу (раздел 3 общего документа).
- В конфигурации коннектора нет
heartbeat.action.query: проверить.helm/values.yamlвinfra/debezium, задеплоить.
Критерий закрытия
heartbeat_ageменее 30 секунд.- Значение
unconfirmedслота уменьшается при повторной проверке через минуту. - Алерт перешёл в
inactive.