You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 13 pg_wal目录始终保留7个WAL段文件问题问询

PostgreSQL 13 pg_wal仅保留7个WAL段文件的原因分析
  • checkpoint触发逻辑主导WAL回收
    你的配置checkpoint_timeout=5min意味着系统每5分钟会强制触发一次checkpoint。PostgreSQL在checkpoint完成后,会将所有已被写入磁盘的脏页对应的WAL段标记为可回收。即便有大量增删改操作,只要checkpoint按时完成,旧的WAL段就会被及时清理或复用,不会在pg_wal目录中累积。

  • max_wal_size未触发的实际场景
    max_wal_size=2GB是触发自动checkpoint的WAL总量阈值,而非强制保留的WAL大小。只有当5分钟内生成的WAL总量达到2GB时,才会触发提前checkpoint。但你的场景中,5分钟内仅生成约112MB的WAL,远未触及2GB阈值,所以max_wal_size的限制并未生效,WAL始终按checkpoint_timeout的节奏回收。

  • WAL段的循环复用机制
    PostgreSQL默认采用循环复用WAL段的策略(未开启归档时)。当旧的WAL段不再被需要(既不需要用于崩溃恢复,也没有副本节点需要同步),系统会直接覆盖重写这些旧文件,而不是保留旧文件并生成新的。你观察到的“新旧文件时间差波动”,本质是旧WAL段被重写的间隔——DML写入量越大,WAL生成速度越快,旧文件被复用的频率就越高,时间差也就越小。

  • 副本搭建的关键注意事项
    筹备流复制副本时,需确保:

    • wal_level设置为replica或更高(PostgreSQL 13默认值为replica,满足需求)
    • 开启archive_mode并配置有效的archive_command,将WAL归档到安全存储;或者确保副本能通过pg_basebackup建立初始连接后,及时拉取主库的WAL(避免主库WAL被复用时副本缺失数据)

内容的提问来源于stack exchange,提问作者roussidis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:12:14