pg_archivecleanup
名称
pg_archivecleanup -- 清理PostgreSQL WAL 归档文件大纲
pg_archivecleanup [option...] archivelocation oldestkeptwalfile
简介
pg_archivecleanup被设计用作 archive_cleanup_command在作为后备服务器运行( 第 26.2 节)时来清理 WAL 文件归档。 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中移除。在这种模式 中,如果指定了.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_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中产生调试输出
从归档目录中移除不再需要的文件