Postgres 逻辑复制 - 在不访问发布服务器的情况下监控订阅服务器

Postgres Logical Replication - Monitor Subscriber Without Accessing the Publisher Server

我希望每个订阅者服务器在不访问发布者服务器的情况下监控其健康状况

1。 我使用发布者的以下代码来获得延迟。是否也可以从订户服务器计算延迟

  SELECT 
        slot_name, active, confirmed_flush_lsn, pg_current_wal_lsn(), 
        (pg_current_wal_lsn() - confirmed_flush_lsn) AS bytes_lag
    FROM pg_replication_slots;

如果我从订阅者那里使用以下内容

select received_lsn, latest_end_lsn from pg_stat_subscription

我还需要发布者提供以下信息 select pg_current_wal_lsn();

有没有办法在不访问发布者的情况下知道延迟?

2。我在导致复制停止的 table 之一有一个重复值,但是

select srsubstate from pg_subscription_rel 
对于所有 table,

显示为 'r'。

3。订阅者如何知道它的逻辑槽甚至发布者被丢弃了

不,您无法从订阅者那里获得该信息。订户不知道还没有收到什么。

要找出复制中断的原因,您必须查看订阅者的日志文件。是的,这是手动的 activity,但解决冲突也是如此。

您会很快弄清楚复制槽是否已被删除,因为日志中会出现令人讨厌的错误消息。这与丢弃的表非常相似。