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

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 16 → 17: 属性变化。

以下差异保留原始字段名与英文源描述。

--- PostgreSQL 16
+++ PostgreSQL 17
@@ -2,18 +2,28 @@
   "environment": [],
   "options": [
     {
+      "description": "Remove backup history files as well. See Section 25.3.2 for details about backup history files.",
+      "names": [
+        "-b",
+        "--clean-backup-history"
+      ],
+      "signature": "-b --clean-backup-history"
+    },
+    {
       "description": "Print lots of debug logging output on stderr .",
       "names": [
-        "-d"
+        "-d",
+        "--debug"
       ],
-      "signature": "-d"
+      "signature": "-d --debug"
     },
     {
       "description": "Print the names of the files that would have been removed on stdout (performs a dry run).",
       "names": [
-        "-n"
+        "-n",
+        "--dry-run"
       ],
-      "signature": "-n"
+      "signature": "-n --dry-run"
     },
     {
       "description": "Print the pg_archivecleanup version and exit.",
@@ -26,9 +36,10 @@
     {
       "description": "Provide an extension that will be stripped from all file names before deciding if they should be deleted. This is typically useful for cleaning up archives that have been compressed during storage, and therefore have had an extension added by the compression program. For example: -x .gz .",
       "names": [
-        "-x"
+        "-x extension",
+        "--strip-extension= extension"
       ],
-      "signature": "-x extension"
+      "signature": "-x extension --strip-extension= extension"
     },
     {
       "description": "Show help about pg_archivecleanup command line arguments, and exit.",

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

相关条目

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