pg_archivecleanup — 清理PostgreSQL WAL 归档文件
pg_archivecleanup [option...] archivelocation oldestkeptwalfile
pg_archivecleanup被设计用作
archive_cleanup_command在作为后备服务器运行(
第 27.2 节)时来清理 WAL 文件归档。
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接受下列命令行参数:
-d
在stderr上打印很多调试日志输出。
-n
在stdout上打印将被移除的文件的名字(执行一次演习)。
-V--version打印pg_archivecleanup版本并退出。
-x 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中产生调试输出
从归档目录中移除不再需要的文件