欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

PostgreSQL 逻辑复制槽膨胀与 WAL 堆积事故复盘

发表于:|最后更新:|分类:数据库与存储|阅读:3477 次

未消费的**逻辑复制槽(Replication Slot)**会阻止 PostgreSQL 回收 WAL 日志,导致 pg_wal 目录磁盘被迅速打满,最终实例只读崩溃。

PostgreSQL 复制架构

一、定位并清理失活的复制槽

sql
-- 查看所有复制槽及其保留 WAL 字节数
SELECT slot_name, active, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained
FROM pg_replication_slots
ORDER BY retained DESC;

-- 删除确认失活的复制槽(谨慎操作)
SELECT pg_drop_replication_slot('stale_slot_name');