Postgresql pg wal占用太大

背景: 主从节点,从节点宕机很久没管,然后删除从节点,然后发现pg_wal越来越大

解决: 复制槽会阻止 WAL 文件被删除,确保它们未被无效占用:

-- 查看所有复制槽
SELECT * FROM pg_replication_slots;

-- 删除无效复制槽
SELECT pg_drop_replication_slot('slot_name');

-- 正常来说,再去看磁盘占用就会很小了

-- 查看当前 WAL 文件数量
SELECT COUNT(*) FROM pg_ls_waldir();

-- 查看未归档的 WAL 文件
SELECT name, size FROM pg_ls_waldir() WHERE name NOT IN (SELECT archived_name FROM pg_stat_archiver);