由于非活动复制槽导致数据库服务器磁盘空间耗尽

2026-10-07T05:54:21.6366667+00:00

数据库服务器在非活动复制槽保留未消耗的 WAL 文件后耗尽了磁盘空间。我们如何安全地删除过期的复制槽?

Windows 商业版 | Windows 365 商业版
0 个注释 无注释

1 个答案

排序依据: 非常有帮助
  1. Domic Vo 34,570 信誉分 独立顾问
    2026-10-07T06:29:16.2066667+00:00

    此问题通常是因为 PostgreSQL 中未使用的复制槽(Replication Slot)仍然保留着 WAL 文件。只要复制槽存在,PostgreSQL 就不会回收该槽所需的 WAL,因此磁盘空间会持续增长。请先检查当前复制槽状态:

    SQL

    SELECT slot_name, active, restart_lsn

    FROM pg_replication_slots;

    如果确认对应的备库、订阅或 CDC 工具已不再使用,并且 active = false,可以安全删除复制槽:

    SQL

    SELECT pg_drop_replication_slot('slot_name');

    PostgreSQL 仅允许删除非活动(inactive)的复制槽。

    如果复制槽仍显示为活动状态,请先查找并终止对应的复制连接,然后再删除:

    SQL

    SELECT * FROM pg_stat_replication;

    SELECT pg_terminate_backend(<pid>);

    SELECT pg_drop_replication_slot('slot_name');

    不建议直接删除 pg_wal 目录中的文件。最佳做法是删除已废弃的复制槽,让 PostgreSQL 自动回收 WAL 文件。

    Domic Vo.

    此答案是否有帮助?

    0 个注释 无注释

你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。