PostgreSQL WAL 占满磁盘的定位与处理
报 could not write to file "pg_wal/..."、No space left on device,数据库变为只读或无法写入。pg_wal 目录持续增长,常见于复制槽或归档失败。
SELECT slot_name, active, restart_lsn,
pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained
FROM pg_replication_slots;
SELECT * FROM pg_stat_archiver;
SELECT * FROM pg_stat_replication;
SHOW archive_command;
df -h
du -sh $PGDATA/pg_wal
ls -lt $PGDATA/pg_wal | head
archive_command 失败,归档积压。wal_keep_size 保留过多。pg_wal。max_wal_size、wal_keep_size 和归档策略。psql — 复制槽与归档状态pg_waldump — WAL 分析pg_basebackup — 重建备库