↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 命令行工具 / 服务端程序

pg_archivecleanup

pg_archivecleanup — 清理 PostgreSQL WAL 归档文件

当前查看 PostgreSQL 18.6。

说明

pg_archivecleanup — 清理 PostgreSQL WAL 归档文件

手册中的可执行程序
pg_archivecleanup
程序版本
18.6
参考清单
服务端程序
选项定义组
6

用法

pg_archivecleanup [ option ...] archivelocation oldestkeptwalfile

手册中的选项

选项与参数说明
-b --clean-backup-history同时移除备份历史文件。关于备份历史文件的详细信息,见 第 25.3.2 节 。
-d --debug在 stderr 上输出大量调试日志。
-n --dry-run在 stdout 上打印原本会被移除的文件名(执行试运行)。
-V --version输出 pg_archivecleanup 的版本号并退出。
-x extension --strip-extension= extension指定一个扩展名;在判断文件是否应删除之前,会先从所有文件名中去掉该扩展名。这通常适用于清理由于存储时经过压缩、因而被压缩程序附加了扩展名的归档。例如: -x .gz 。
-? --help显示有关 pg_archivecleanup 命令行参数的帮助并退出。

手册定义

pg_archivecleanup

pg_archivecleanup — 清理PostgreSQL WAL 归档文件

大纲

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

说明

pg_archivecleanup设计为在服务器作为备库运行时用作 archive_cleanup_command,以清理 WAL 文件归档(见第 26.2 节)。pg_archivecleanup也可作为独立程序使用,以清理 WAL 文件归档。

要将备库配置为使用 pg_archivecleanup,请将以下内容写入其 postgresql.conf 配置文件:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

其中 archivelocation 是应移除 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 接受下列命令行参数:

-b
--clean-backup-history

同时移除备份历史文件。关于备份历史文件的详细信息,见第 25.3.2 节。

-d
--debug

在 stderr 上输出大量调试日志。

-n
--dry-run

在 stdout 上打印原本会被移除的文件名(执行试运行)。

-V
--version

输出 pg_archivecleanup 的版本号并退出。

-x extension
--strip-extension=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 中产生调试输出

  • 从归档目录中移除不再需要的文件

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回命令行工具 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。