如何启用pg_xlog的自动清理

时间:2016-12-14 20:57:38

标签: postgresql wal postgresql-9.6

我正在尝试配置PostgreSQL 9.6数据库以限制pg_xlog文件夹的大小。我已经阅读了很多关于这个问题或类似问题的帖子,但我没有尝试过任何帮助。

我为Postgresql 9.6服务实例编写了一个安装脚本。它执行initdb,注册Windows服务,启动它,创建一个空数据库并将转储恢复到数据库中。脚本完成后,数据库结构很好,数据在那里,但xlog文件夹已经包含55个文件(880 MB)。

为了减小文件夹的大小,我尝试将wal_keep_segments设置为0或1,将max_wal_size设置为200mb,减少checkpoint_timeout,将archive_mode设置为off,将archive_command设置为空字符串。当我查询pg_settings时,我可以看到属性设置正确。

然后我通过SQL强制检查点,对数据库进行了清理,重新启动了Windows服务并尝试了pg_archivecleanup,没有任何实际工作。我的xlog文件夹缩小到50个文件(800 mb),而不是我在配置中设置的200 mb限制附近。

我不知道还有什么可以尝试的。如果有人能告诉我我做错了什么,我将非常感激。如果需要更多信息,我很乐意提供。

非常感谢

1 个答案:

答案 0 :(得分:1)

max_wal_size处于默认值1GB时,PostgreSQL不会积极地删除已经分配的WAL段。

只要WAL段已满且需要回收,减少就会逐渐发生。然后PostgreSQL将决定是否删除该文件(如果超过max_wal_size)或将其重命名为新的WAL段以供将来使用。

如果您不想等待那么久,可以通过调用pg_switch_xlog()函数强制执行多个WAL切换,这样可以减少pg_xlog中的文件数量。< / p>