由于关键冲突,我们的逻辑复制最近停止了 - wals 正在下降但没有被应用。我想设置一些监控,以便在发生这种情况时收到通知,但我不确定要使用哪些字段。
我想我应该能够使用 pg_stat_subscription 视图,但我不确定从它的描述中它的列到底代表什么。
我可以将源的 pg_current_wal_lsn() 与副本的 pg_stat_subscription.received_lsn 进行比较以确保数据下降吗?
received_lsn pg_lsn Last write-ahead log location received, the initial value of this field being 0
并且将副本的 pg_stat_subscription.received_lsn 与其 pg_stat_subscription.latest_end_lsn 进行比较让我知道数据是否正在重播?
latest_end_lsn pg_lsn Last write-ahead log location reported to origin WAL sender
这是我最不确定的最后一个问题——“报告给原始 WAL 发件人”是否意味着复制已在副本上成功重播?或者我需要使用其他一些字段来了解副本已成功应用源数据库中的更改的程度?