5

我正在尝试配置 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 限制。

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

非常感谢

4

1 回答 1

6

max_wal_sizePostgreSQL 不会主动删除在默认值 1GB时已经分配的 WAL 段。

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

如果您不想等待那么久,您可以通过调用该pg_switch_xlog()函数来强制执行多个 WAL 开关,这应该会减少pg_xlog.

于 2016-12-15T10:09:54.733 回答