DBAtlas · Atlas d'exploitation des bases de données

Surveiller la réplication logique (pg_stat_subscription, erreurs d'apply, retard des slots)

PostgreSQLRéplication logique

Commande

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

Ce que fait la commande

Côté subscriber, affiche les workers apply/tablesync, les LSN reçus et confirmés, l'heure du dernier message et le cumul des erreurs d'apply/sync ; côté publisher, affiche le WAL non confirmé (confirmed_flush) du slot logique et le WAL total qu'il retient.

Quand l'utiliser

Pendant la mise en place de la réplication logique, pour confirmer que le retard tend vers zéro lors de la bascule d'une mise à niveau/migration, et pour les alertes d'erreur.

Attention

Si pid est NULL, le worker d'apply ne tourne pas (souscription désactivée ou échecs et redémarrages répétés) ; consultez le journal du serveur. Un apply_error_count croissant indique un conflit. Une souscription bloquée accumule WAL et catalog_xmin sur le publisher ; surveillez le disque et le bloat du catalogue du publisher.

Ouvrir dans DBAtlas →

Voir aussi