pg_archivecleanup

Name

pg_archivecleanup -- 清理PostgreSQL WAL 归档文件

Synopsis

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

描述

pg_archivecleanup被设计为后备服务器(见Section 25.2)运行时用来清理 WAL 文件归档的 archive_cleanup_commandpg_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 文件而不出错。例如,下面的例子将移除所有比名为000000010000003700000010的 WAL 文件老的文件:

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