論理レプリケーションを監視(pg_stat_subscription、適用エラー、スロット遅延)
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を蓄積させるため、パブリッシャのディスクとカタログの肥大化を監視する。