Skip to content

pg_archivecleanup

pg_archivecleanup — 清理PostgreSQLWAL 归档文件

概要

pg_archivecleanup[选项...]归档位置**最旧保留 WAL 文件

描述

pg_archivecleanup被设计为archive_cleanup_command,用于在作为备用服务器运行时清理 WAL 文件归档(请参阅第 27.2 节)。pg_archivecleanup还可以用作独立程序来清理 WAL 文件归档。

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

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

其中*归档位置*是应该从中删除 WAL 段文件的目录。

当在archive_cleanup_command中使用时,所有逻辑上早于%r参数值的 WAL 文件都将从*archivelocation中删除。这最大程度地减少了需要保留的文件数量,同时保留了崩溃重启功能。如果archivelocation是此特定备用服务器的临时过渡区域,则使用此参数是合适的,但适用于将archivelocation*用作长期 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*是服务器所有者用户可读写的一个目录。

选项

pg_archivecleanup接受以下命令行参数

-d

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

-n

stdout 上打印将被删除的文件的名称(执行空运行)。

-V
--version

打印 pg_archivecleanup 版本并退出。

-x extension

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

-?
--help

显示有关 pg_archivecleanup 命令行参数的帮助,然后退出。

环境

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

备注

当作为独立实用程序使用时,pg_archivecleanup旨在与PostgreSQL8.0 及更高版本配合使用;当作为存档清理命令使用时,则旨在与PostgreSQL9.0 及更高版本配合使用。

pg_archivecleanup用 C 编写,具有易于修改的源代码,并有专门指定的部分可根据自己的需要进行修改。

示例

在 Linux 或 Unix 系统上,可以使用

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

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

  • cleanup.log 中生成调试输出

  • 从存档目录中删除不再需要的文件