pg之archive参数详解

2021-03-14 17:00:04 浏览数 (1)

archive_mode

当启用archive_mode时,通过设置archive_command将已完成的WAL段发送到归档存储。除了off,disable,还有两种模式:on,always。在正常操作期间,两种模式之间没有区别,但是当设置为always的情况下,WAL archiver在存档恢复或待机模式下也被启用。在always模式下,从归档还原或流式复制流的所有文件都将被归档(再次)。archive_mode和archive_command是单独的变量,因此可以在不更改存档模式的情况下更改archive_command。此参数只能在服务器启动时设置。当wal_level设置为minimal时,无法启用archive_mode。

archive_timeout

archive_command执行本地shell命令来归档已完成的WAL文件段。仅对已完成的WAL段进行调用。因此,如果你的服务器产生很少的WAL(或者在这种情况下有很长的时间),在事务完成和归档存储器中的安全记录之间可能会有很长的延迟。

为了限制未归档的数据的可能性,可以设置archive_timeout来强制服务器定期切换到新的WAL段文件。

当此参数大于零时,只要从最后一个段文件切换开始经过了许多秒,服务器就会切换到一个新的段文件,并且存在任何数据库活动,包括一个检查点(如果没有检查点,则跳过检查点数据库活动)。

请注意,由于强制切换而提前关闭的归档文件的长度与完整文件的长度相同。 因此,使用一个非常短的archive_timeout是不明智的 - 这会使您的存档存储空间膨胀。一分钟左右的archive_timeout设置通常是合理的。

如果希望将数据从主服务器上复制出来,则应考虑使用流式复制而不是归档。此参数只能在postgresql.conf文件或服务器命令行中设置。

相关官方参考链接如下:https://stackoverflow.com/questions/39270621/postgres-wal-files-not-getting-deleted

0 人点赞