DBAtlas · データベース運用アトラス

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

DBAtlas で開く →

関連項目