DBAtlas · Atlas de operações de banco de dados

Monitorar a replicação lógica (pg_stat_subscription, erros de apply, lag de slot)

PostgreSQLReplicação lógica

Comando

-- 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';

O que faz

No subscriber, mostra os workers de apply/tablesync, o LSN recebido e confirmado, o horário da última mensagem e as contagens cumulativas de erros de apply/sync; no publisher, mostra o WAL não confirmado (confirmed_flush) do slot lógico e o total de WAL que ele retém.

Quando usar

Durante a configuração da replicação lógica, para confirmar que o lag se aproxima de zero na virada de um upgrade/migração e para alertas de erro.

Atenção

Se pid for NULL, o apply worker não está rodando (subscription desabilitada ou falhando e reiniciando repetidamente); verifique o log do servidor. Um apply_error_count crescente indica um conflito. Uma subscription parada acumula WAL e catalog_xmin no publisher; monitore o disco e o bloat do catálogo no publisher.

Abrir no DBAtlas →

Relacionados