如何启用 pg_xlog 的自动清理
How to enable auto clean of pg_xlog
我正在尝试配置 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 限制。
我不知道还能尝试什么。如果有人能告诉我我做错了什么,我将不胜感激。如果需要更多信息,我很乐意提供。
非常感谢
当 max_wal_size
为默认值 1GB 时,PostgreSQL 不会主动删除已经分配的 WAL 段。
每当 WAL 段已满且需要回收时,减少将逐渐发生。然后 PostgreSQL 将决定是否删除该文件(如果超过 max_wal_size
)或将其重命名为新的 WAL 段以备将来使用。
如果您不想等那么久,可以通过调用 pg_switch_xlog()
函数来强制执行多个 WAL 开关,这应该会减少 pg_xlog
中的文件数量。
我正在尝试配置 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 限制。
我不知道还能尝试什么。如果有人能告诉我我做错了什么,我将不胜感激。如果需要更多信息,我很乐意提供。
非常感谢
当 max_wal_size
为默认值 1GB 时,PostgreSQL 不会主动删除已经分配的 WAL 段。
每当 WAL 段已满且需要回收时,减少将逐渐发生。然后 PostgreSQL 将决定是否删除该文件(如果超过 max_wal_size
)或将其重命名为新的 WAL 段以备将来使用。
如果您不想等那么久,可以通过调用 pg_switch_xlog()
函数来强制执行多个 WAL 开关,这应该会减少 pg_xlog
中的文件数量。