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

Мониторинг логической репликации (pg_stat_subscription, ошибки apply, отставание слота)

PostgreSQLЛогическая репликация

Команда

-- Subscriber:
SELECT subname, pid, leader_pid, relid::regclass AS syncing_table, received_lsn, latest_end_lsn, now() - last_msg_receipt_time AS since_last_msg, latest_end_time FROM pg_stat_subscription;
SELECT subname, apply_error_count, sync_error_count, stats_reset FROM pg_stat_subscription_stats;
-- Publisher:
SELECT slot_name, plugin, database, active, wal_status,
       pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)) AS confirmed_lag,
       pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained_wal
FROM pg_replication_slots WHERE slot_type = 'logical';

Что делает

На подписчике показывает рабочие процессы apply/tablesync, полученный и подтверждённый LSN, время последнего сообщения и накопленное число ошибок apply/sync; на издателе показывает неподтверждённый (confirmed_flush) WAL логического слота и общий удерживаемый им WAL.

Когда использовать

При настройке логической репликации, чтобы убедиться, что отставание приближается к нулю при переключении в ходе обновления/миграции, и для алертинга по ошибкам.

Внимание

Если pid равен NULL, рабочий процесс apply не запущен (подписка отключена или постоянно падает и перезапускается); проверьте журнал сервера. Рост apply_error_count указывает на конфликт. Остановившаяся подписка накапливает WAL и catalog_xmin на издателе; следите за диском издателя и раздуванием каталога.

Открыть в DBAtlas →

Связанные материалы