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);