更新时间:2026-02-11 GMT+08:00
分享

GaussDB数据源如何手动删除复制槽?

问题描述

GaussDB数据源不会自动删除复制槽,当复制槽数达到上限时需要手动删除复制槽,作业不再使用时,为避免日志堆积也要删除复制槽。

原因分析

GaussDB数据源不会自动删除复制槽。

解决方案

  1. 确认要删除的复制槽,复制槽命名规则:migration_作业ID,作业ID可以在实时集成作业监控中查看。
    • 方式一:
      图1 查看作业ID

    • 方式二:
      图2 查看作业ID

  2. 登录作业使用的源数据库。
  3. 查询同步任务选择的database对象所对应的流复制槽名称。
    select slot_name from pg_replication_slots where database = 'database';
  4. 执行如下语句,删除对应的流复制槽。
    select * from pg_drop_replication_slot('slot_name');
  5. 执行如下语句,查询流复制槽是否成功删除。
    select slot_name from pg_replication_slots where slot_name = 'slot_name';
  6. 如果是gaussdb分布式,需要每个分片都执行,首先,查看各分片名称。

    SELECT distinct node_name FROM pgxc_node
  7. 在指定分片上执行sql。
    EXECUTE DIRECT ON(dn_6001_6002) 'select pg_drop_replication_slot(''slot_name'')';
    EXECUTE DIRECT ON(dn_6003_6004) 'select pg_drop_replication_slot(''slot_name'')';

相关文档