Surveiller la réplication logique (pg_stat_subscription, erreurs d'apply, retard des slots)
PostgreSQLRéplication logiqueCommande
-- 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.
Voir aussi
- Ajouter une table à une publication et rafraîchir la souscription (REFRESH PUBLICATION)
- Résoudre un conflit de réplication logique (disable_on_error, SKIP)
- Synchroniser les valeurs des séquences vers le subscriber en réplication logique
- Supprimer une souscription et nettoyer un slot logique orphelin sur le publisher