如何在Postgres中选择正在复制的表或在Postgress中列出正在复制的数据库



我有一个3节点Postgres集群,想知道逻辑复制下的表/数据库。我面临的问题是,当领导者/主节点出现故障,其中一个副本将接管领导者/主服务器节点,然后随着时间的推移,当旧的领导者/主计算机重新加入集群时。在这种情况下,我想知道在这个新复制副本的逻辑复制下发生了什么变化。

注意:新副本将被同步,并且将包含与其他节点相同的数据。我正在使用postgres 11及以上的

如果使用逻辑复制:

publisher端,pg_publication_tables表将向您显示正在逻辑解码的表。

订阅者侧,您可以监视pg_stat_subscription以获得received_lsn和last_*时间列

如果使用pglogic扩展:在发布服务器端,pglogical.node_interface将显示节点id及其名称。此外,pglogical.replication_set表将显示在集合中复制的语句类型

在用户端,pglogical.show_subscription_status()功能将向您显示订阅名称和状态,如replicating

按照以下步骤操作:

  1. 获取所需的复制集ID(没有列出所有可用的条件(:

    SELECT * FROM pglogical.replication_set
    WHERE set_name = 'your_replication_set_name';
    

    请参阅"set_id"列的值(例如:123456789(。

  2. 列出由"set_id"给定的所需复制集下的表:

    SELECT * FROM pglogical.replication_set_table
    WHERE set_id = 123456789;
    

    您将获得所需复制集ID下的所有表。

相关内容

  • 没有找到相关文章

最新更新