1

我不是 DBA,但我将 postgresql 用于生产服务器,并且我使用的是 postgresql 10 数据库。我正在使用 Bigsql,我开始将我的生产服务器复制到其他服务器,并且在复制服务器上一切正常,但在我的生产服务器上它们没有空间了。在我的生产服务器上执行 du 命令后,我得到该pg_wal文件夹​​有 17 gb 文件,每个文件的大小为 16 mb。

经过一些谷歌搜索后,我将我的 postgresql.conf 文件更改为:

wal_level = logical
archive_mode = on
archive_command = 'cp -i %p /etc/bigsql/data/pg10/pg_wal/archive_status/%f'

我从 Bigsql 安装 postgresql 10 并进行了上述更改。

更改后,目录 /pg_wal/archive_status 有 16 GB 的日志。所以我的问题是我应该手动删除它们还是我必须等待系统自动删除它们。如果我将archive_mode写入on是否应该自动删除该wal文件?

感谢您宝贵的时间。

4

1 回答 1

4

这取决于您如何进行备份以及您是否需要将数据库恢复到某个时间点。

只有完整的离线文件系统备份(离线意味着关闭数据库)或使用 pg_dumpall 的在线逻辑备份不需要这些文件进行恢复。

您需要这些文件来恢复在数据库运行时创建的文件系统备份。没有它们,备份将无法恢复。尽管存在自动复制所需 WAL 文件的备份解决方案(如Barman)。

如果您的副本数据库由于某种原因落后于主数据库,您还需要这些文件。或者您需要将数据库恢复到过去的某个时间点。

但是这些文件压缩得很好——压缩后应该小于 10% 的大小——你可以编写你的 archive_command 来自动压缩它们,而不仅仅是复制。

你应该最终从存档中删除它们。我建议在它们至少一个月大之前不要删除它们,并且在创建它们之后至少完成 2 次完整的成功备份。

于 2017-11-19T16:52:59.413 回答