ux_archivecleanup — 清理UXDBWAL归档文件
ux_archivecleanup
[option
...] archivelocation
oldestkeptwalfile
ux_archivecleanup被设计用作archive_cleanup_command
在作为后备服务器运行时来清理WAL文件归档。ux_archivecleanup也可以被用作一个单独的程序来清理WAL文件归档。
要配置一个后备服务器以使用ux_archivecleanup,把下面
的内容放在recovery.conf
配置文件中:
archive_cleanup_command = 'ux_archivecleanup archivelocation
%r'
其中archivelocation
是要从中移除WAL段文件的目录。
当被用在archive-cleanup-command
中时,所有逻辑上在
%r
参数的值之前的WAL文件都将被从
archivelocation
移除。这能最小化需要被保留的文件数量,
同时能保留崩溃后重启的能力。如果对于这台特定的后备服务器,
archivelocation
是一个短暂需要的区域,使用这个参数就是
合适的,但是当archivelocation
要用作一个长期的WAL归档
区域或者当多个后备服务器正在从这个归档位置恢复时,使用这个参数就
不合适。
当被用作一个单独的程序时,所有逻辑上在oldestkeptwalfile
之前的WAL文件将被从archivelocation
中移除。在这种模式
中,如果指定了.partial
或者.backup
文件名,则
只有该文件前缀将被用作oldestkeptwalfile
。这种对
.backup
文件名的处理允许你移除所有在一个特定基础备份之前归
档的WAL文件而不出错。例如,下面的例子将移除所有比WAL文件名
000000010000003700000010
老的文件:
ux_archivecleanup -d archive 000000010000003700000010.00000020.backup ux_archivecleanup: keep WAL file "archive/000000010000003700000010" and later ux_archivecleanup: removing file "archive/00000001000000370000000F" ux_archivecleanup: removing file "archive/00000001000000370000000E"
ux_archivecleanup假定archivelocation
是一个可读的目录并且对于服务器拥有者是可写的。
ux_archivecleanup接受下列命令行参数:
-d
在stderr
上打印很多调试日志输出。
-n
在stdout
上打印将被移除的文件的名字(执行一次演习)。
-V
--version
打印ux_archivecleanup版本并退出。
-x
extension
提供一个扩展名,在决定所有的文件
是否应该被删除之前,将从文件名中剥离这个扩展名。这通常有助于清理已经
存储期间被压缩过并且被压缩程序增加了一个扩展名的归档。例如:
-x .gz
。
-Z
使用分布式文件系统(UXFS)。
-?
--help
显示ux_archivecleanup命令行参数的帮助并退出。
ux_archivecleanup以 C 写成并且具有很容易修改的 源代码,其中有特别指定的区域用于修改以符合你的需要。
在 Linux 或者 Unix 系统上,你可能会用:
archive_cleanup_command = 'ux_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
其中归档目录位于后备服务器上,这样archive_command
通过 NFS
来访问它,但是文件对于后备服务器来说是本地的。这将会:
在cleanup.log
中产生调试输出;
从归档目录中移除不再需要的文件。