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 归档区域,或多个备用服务器正在从同一归档位置恢复时,则 不 适用。
当用作独立程序时,所有逻辑上位于 最早保留的wal文件
之前的 WAL 文件都将从 归档位置
中删除。在这种模式下,如果您指定 .partial
或 .backup
文件名,则只会将文件前缀用作 最早保留的wal文件
。对 .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
中生成调试输出
从归档目录中删除不再需要的文件
如果您在文档中发现任何不正确、与您的特定功能体验不符或需要进一步澄清的地方,请使用此表格报告文档问题。