pg_archivecleanup — 清理
PostgreSQL WAL 归档文件pg_archivecleanup
[选项
...] 归档位置
最旧保持 WAL 文件
pg_archivecleanup 的设计目的是用作 archive_cleanup_command
,用于在作为备用服务器运行时清理 WAL 文件归档(请参见第 26.2 节)。pg_archivecleanup 还可用作独立程序来清理 WAL 文件归档。
若要将备用服务器配置为使用pg_archivecleanup,请将其放入postgresql.conf
配置文件中
archive_cleanup_command = 'pg_archivecleanup archivelocation
%r'
其中 归档位置
是应从中移除 WAL 片段文件的位置。
在 archive_cleanup_command 中使用时,所有逻辑上在 %r
自变量的值之前的所有 WAL 文件,将从 存档位置
中移除。这会将需要保留的文件数量降到最低,同时保留崩溃重启能力。如果 存档位置
是该特定备用服务器的临时存放位置,那么可以使用此参数,但 不 在 存档位置
作为长期 WAL 存档区域,或多个备用服务器从同一存档位置恢复时,使用此参数。
如果作为独立程序使用,那么所有逻辑上在 oldestkeptwalfile
之前的 WAL 文件,将从 存档位置
中移除。在此模式中,如果指定 .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 假定 存档位置
是服务器拥有者用户可读并且可写的目录。
pg_archivecleanup 接受以下命令行自变量
-b
--clean-backup-history
移除备份历史文件。请参阅 第 25.3.2 节 以了解有关备份历史文件的详细信息。
-d
--debug
在 stderr
中打印大量调试日志输出。
-n
--dry-run
在 stdout
中打印即将在移除文件名的列表(执行一次空运行)。
-V
--version
打印 pg_archivecleanup 版本并退出。
-x 扩展名
--strip-extension=扩展名
提供一个扩展名,在决定是否删除所有文件名前从所有文件名中剥离此扩展名。这通常对于清除存储期间已压缩的存档很有用,因此已经由压缩程序添加了扩展名。例如:-x.gz
。
-?
--help
显示有关 pg_archivecleanup 命令行参数的帮助,然后退出。
环境变量 PG_COLOR
指定是否在诊断消息中使用颜色。可能的值有 always
、auto
和 never
。
当作为独立实用程序使用时,pg_archivecleanup 旨在与 PostgreSQL 8.0 及更高版本配合使用,或者当作为归档清理命令使用时,旨在与 PostgreSQL 9.0 及更高版本配合使用。
pg_archivecleanup 用 C 编写,具有易于修改的源代码,并且有专门指定的部分可针对自身需求进行修改。
在 Linux 或 Unix 系统上,你可能会使用
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
其中归档目录物理上位于备用服务器上,以便 archive_command
通过 NFS 访问它,但文件对于备用服务器来说是本地的。这将
在 cleanup.log
中生成调试输出
从归档目录中移除不再需要的文件