问题报告 纠错本页面

pg_archivecleanup

名称

pg_archivecleanup -- 清理PostgreSQL WAL归档文件

大纲

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

描述

pg_archivecleanup被设计来用作archive_cleanup_command, 在作为备用服务器运行时清理WAL文件归档(参阅第 25.2 节)。 pg_archivecleanup也可以用作一个单独的程序清理WAL文件归档。

要配置备用服务器使用pg_archivecleanup,将下列代码放入 recovery.conf配置文件中:

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

这里的archivelocation是应该被移除的WAL段文件的目录。

当在archive_cleanup_command中使用时,所有逻辑上在%r 参数值之前的WAL文件都将从archivelocation中移除。 这在保存崩溃-重启能力时,最小化了需要保留的文件数量。 如果archivelocation是这个特殊的备用服务器的瞬态暂存区域, 那么使用这个参数是合适的,但是在archivelocation 用作长期WAL归档区,或者多个备用服务器是从同一个归档位置恢复而来的时, 是合适的。

当用作独立程序时,所有逻辑上在oldestkeptwalfile 之前的WAL文件都将从archivelocation中移除。 在这个模式中,如果你声明一个.backup文件名, 那么只有文件前缀将被用作oldestkeptwalfile。 这允许你无误的删除所有在一个特定基础备份之前归档的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接受下列命令行参数:

-d

stderr上打印大量的调试日志输出。

-n

打印将要在stdout上删除的文件名(执行一个空运行)。

-V
--version

打印pg_archivecleanup的版本并退出。

-x extension

当该程序用作单独的工具时,提供一个扩展,该扩展将在决定文件是否应该被删除之前, 提取所有的文件名。这通常在清理在存储时已经压缩了的归档时是有用的, 并且因此有一个由压缩程序添加的扩展。例如:-x.gz

请注意,传递到该程序的.backup文件名不应该包含该扩展。

-?
--help

显示关于pg_archivecleanup命令行参数的帮助信息,然后退出。

注意

当用作单独的工具时,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访问它的,但是文件对于备用服务器是本地的。这将:

作者

Simon Riggs

又见

pg_standby