我正在尝试了解我在 PostgreSQL 环境中的 wals 行为。我的沃尔设置是:
wal_keep_segments = 200
max_wal_size = 3GB
min_wal_size = 80MB
archive_command = 'cp %p /PostgreSQL-wal/9.6/pg_xlog/wal_archives/%f'
archive_timeout = 10
#checkpoint_flush_after = 256kB
#checkpoint_completion_target = 0.5
我的 wals 目录是/PostgreSQL-wal/9.6/pg_xlog/
,我的档案目录是PostgreSQL-wal/9.6/pg_xlog/wal_archives
. 昨晚我的 wals 目录存储已满(存档目录也因为它们在同一个文件系统上)。
我的 wals 目录中现在有 211 个 wals:
ls -l /PostgreSQL-wal/9.6/pg_xlog/ | wc -l
212
唯一在夜间运行的只是从我们的监控代理中选择的。我猜想 wal 是因为 archive_timeout 非常低而被创建的,而它们被删除是因为 wal_keep_segments 很高。
今天早上,我将 wal_keep_segments 设置为 100,并将 archive_timeout 设置为 6 分钟。现在,在设置这些设置并启动集群 wals 开关后工作正常,我没有看到创建了很多 wals。但是,不应该自动删除旧的wals吗?我可以安全地删除档案吗?