云数据库 RDS-RDS for PostgreSQL发布与订阅:订阅使用限制

时间:2024-05-31 17:29:18

订阅使用限制

  • 为了确保使用Failover Slot,必须在发布端手工创建逻辑复制槽(Failover Slot),并通过create_slot = false关联已有复制槽,如下:

    CREATE SUBSCRIPTION sub1 CONNECTION 'host=192.168.0.1 port=5432 user=user1 dbname=db1' PUBLICATION pub_name with (create_slot = false,slot_name = FailoverSlot_name);

  • 逻辑复制不会复制DDL变更,因此发布集中的表必须已经存在于订阅端上。
  • 同一个数据库中,可以创建多个subscription,这些subscription可以来自一个或多个发布者。
  • 订阅者的同一张表,不能接受来自同一个源的多个发布。
  • 在创建subscription或者alter subscription时,可以使用enable来启用该订阅,或者使用disable暂停该订阅。
  • 如果要完全删除订阅,使用DROP SUBSCRIPTION,注意,删除订阅后,本地的表不会被删除,数据也不会清除,仅仅是不在接收该订阅的上游信息。

    如果订阅与复制槽相关联,就不能在事务块内部执行DROP SUBSCRIPTION。可以使用ALTER SUBSCRIPTION取消关联复制槽。

    删除订阅可参考以下步骤:

    1. 在订阅端查询订阅关联的的复制槽。

      select subname,subconninfo,subslotname from pg_subscription where subname = 'sub2';

      • subname为订阅者名称。
      • subconninfo为连接远程主机信息。
      • subslotname 为远程主机复制槽名称。
    2. 在订阅端执行ALTER SUBSCRIPTION取消关联复制槽并删除。

      ALTER SUBSCRIPTION subname SET (slot_name = NONE);

      DROP SUBSCRIPTION subname;

    3. 在发布端删除关联的复制槽。

      select pg_drop_replication_slot(' slot_name);

support.huaweicloud.com/bestpractice-rds/rds_pg_04_0008.html