Postgresql 中文操作指南

pg_archivecleanup

pg_archivecleanup —— 清理 PostgreSQL WAL 存档文件

Synopsis

pg_archivecleanup [ option …​] archivelocation oldestkeptwalfile

Description

pg_archivecleanup 设计为用作 archive_cleanup_command ,用以在运行备用服务器时清理 WAL 文件存档(参见 Section 27.2 )。pg_archivecleanup 也可用作清理 WAL 文件存档的独立程序。

要配置备用服务器以使用 pg_archivecleanup,请将其放入其 postgresql.conf 配置文件中:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

其中 archivelocation 是要从中删除 WAL 段文件的目录。

archive_cleanup_command 中使用时,所有逻辑上在 %r 参数值之前的所有 WAL 文件都将从 archivelocation 中删除。这最大限度减少了需要保留的文件数,同时保留崩溃重启功能。如果 archivelocation 是此特定备用服务器的临时暂存区,那么使用此参数是合适的,但当 notarchivelocation 旨在作为长期 WAL 存档区,或当多个备用服务器从同一存档位置恢复时,使用此参数不合适。

在用作独立程序时,逻辑上在 oldestkeptwalfile 之前的 WAL 文件都将从 archivelocation 中删除。在此模式下,如果您指定了 .partial.backup 文件名,则只会将文件前缀用作 oldestkeptwalfile 。这种处理方式 .backup 文件名允许您删除在特定基准备份之前存档的所有 WAL 文件,且不会报错。例如,以下示例将删除所有旧于 WAL 文件名 000000010000003700000010 的文件:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanup 假设 archivelocation 是服务器所有者用户可以读写的目录。

Options

pg_archivecleanup 接受以下命令行参数:

  • -d

    • stderr 上打印大量调试日志输出。

  • -n

    • 打印在 stdout 上本应删除的文件名(执行一个空运行)。

  • -V_—​version_

    • 打印 pg_archivecleanup 版本并退出。

  • -x extension

    • 提供将在决定是否删除所有文件名之前从所有文件名中剥离的后缀。这通常对于清理存储过程中已压缩的存档非常有用,压缩程序为此已添加了一个后缀。例如: -x .gz

  • -?_—​help_

    • 显示关于 pg_archivecleanup 命令行参数的帮助,并退出。

Environment

环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值是 alwaysautonever

Notes

pg_archivecleanup 设计为在用作独立实用程序时与 PostgreSQL 8.0 和更高版本一起使用,或用作存档清理命令时与 PostgreSQL 9.0 和更高版本一起使用。

pg_archivecleanup 用 C 语言编写,具有易于修改的源代码,其中有专门指定用于修改以符合您自身需求的部分

Examples

在 Linux 或 Unix 系统上,您可能使用:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

其中归档目录实际位于备用服务器上,以便 archive_command 通过 NFS 访问它,但文件是备用文件的本地文件。这将: