PostgreSQL 9.6 wals管理
PostgreSQL 9.6 wals management
我正在尝试了解我在 PostgreSQL 环境中的 wals 行为。我的 wal 设置是:
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/
,我的 archives 目录是 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 不应该自动删除吗?我可以安全地删除档案吗?
max_wal_size
不是硬性限制。
当超过限制时,PostgreSQL 将在下一个检查点删除而不是回收旧的 WAL 段。所以 pg_xlog
仍然可以增长直到下一个检查点。
您设置的 3 GB 对应 192 个 WAL 段,低于您的 wal_keep_segments
设置。所以 PostgreSQL 甚至不会开始回收或删除 WAL 段,直到有 3.125 GB 的 WAL 段。
您应该降低这些设置或增加 WAL 存档的磁盘 space。
您可以等到数据库 activity 导致切换到新的 WAL 段或调用 pg_switch_wal()
函数手动执行此操作。然后手动等待检查点或运行 CHECKPOINT
。然后你会看到 WAL 段的数量减少了。
我正在尝试了解我在 PostgreSQL 环境中的 wals 行为。我的 wal 设置是:
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/
,我的 archives 目录是 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 不应该自动删除吗?我可以安全地删除档案吗?
max_wal_size
不是硬性限制。
当超过限制时,PostgreSQL 将在下一个检查点删除而不是回收旧的 WAL 段。所以 pg_xlog
仍然可以增长直到下一个检查点。
您设置的 3 GB 对应 192 个 WAL 段,低于您的 wal_keep_segments
设置。所以 PostgreSQL 甚至不会开始回收或删除 WAL 段,直到有 3.125 GB 的 WAL 段。
您应该降低这些设置或增加 WAL 存档的磁盘 space。
您可以等到数据库 activity 导致切换到新的 WAL 段或调用 pg_switch_wal()
函数手动执行此操作。然后手动等待检查点或运行 CHECKPOINT
。然后你会看到 WAL 段的数量减少了。