云数据库 RDS-存在非活跃逻辑复制槽问题定位及处理方法:排查及解决方法

时间:2024-04-10 17:26:34

排查及解决方法

  1. 排查是否存在失效的逻辑复制槽。

    在发布端执行如下SQL,排查是否存在失效的逻辑复制槽。

    若有返回时,则说明数据库中存在失效的逻辑复制槽,其中返回的slot_name字段为失效逻辑复制槽的名称。

    select slot_name,database,active from pg_replication_slots where active ='f' and slot_type='logical';
  2. 业务确认是否需要继续使用该逻辑复制槽。

    联系业务方排查是否要继续使用该逻辑复制槽,若不使用时执行3

    若需继续使用,建议业务按照以下方向排查:

    1. 订阅端创建订阅时未启用逻辑复制槽的复制,手动设置为disable状态。
      在订阅端执行以下SQL查看subenabled列的字段返回。
      select  subname,subenabled from pg_subscription;
      • 若subenabled列的字段返回为f,说明订阅未启用逻辑复制,执行以下SQL启用订阅的逻辑复制。
        ALTER SUBSCRIPTION sub_name ENABLE;
      • 若返回为t,则进行以下步骤排查。
    2. 使用其他工具执行任务时使用的逻辑复制槽未自动清理,由于任务中断或源数据库或目标数据库的某些操作,如备份、重建索引等意外情况产生。
      在发布端执行如下SQL查询,观察返回的“slot_name”字段的值是否是以drs等开头,则说明是执行drs任务产生的该逻辑复制槽,此时可根据任务情况,判断是否执行3清理。
      select slot_name,database,active from pg_replication_slots where active ='f' and slot_type='logical';
  3. 如果确认不再使用逻辑复制槽,则删除失效的逻辑复制槽。
    select pg_drop_replication_slot('slot_name');
support.huaweicloud.com/usermanual-rds/rds_pg_08_00011.html