pg_archivecleanup — 清理 PostgreSQL WAL 归档文件
pg_archivecleanup
[选项
...] 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
中产生调试输出
从归档目录中删除不再需要的文件
如果您在文档中发现任何不正确、与您对特定功能的实际体验不符或需要进一步说明的内容,请使用 此表单 报告文档问题。