9.1.?归档恢复设置

restore_command (string)

用于获取WAL文件系列的一个已归档段的本地shell命令。这个参数是归档恢复所必需的,但是对于流复制是可选的。在该字符串中的任何%f会被替换为从归档中获得的文件的名称,并且任何%p会被在服务器上的复制目标路径名替换(该路径名是相对于当前工作目录的,即集群的数据目录)。任何%r会被包含上一个可用重启点的文件的名称所替换。在那些必须被保留用于使得一次恢复变成可重启的文件中,这个文件是其中最早的一个,因此这个信息可以被用来把归档清空为支持从当前恢复重启所需的最小值。%r通常只被热备配置所使用。要嵌入一个真正的%字符,需要写成%%

很重要的一点是,该命令只有在成功时才返回一个为零的退出状态。该命令被询问不存在于归档中的文件名时,返回非零。示例:

restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows

一个例外是如果该命令被一个信号(不是SIGTERM,它是数据库服务器关闭的一部分)或者一个shell错误(例如命令未找到)终止,则恢复将会中止并且服务器将不会启动。

archive_cleanup_command (string)

这个可选参数指定了一个shell命令,它将在每一个重启点被执行。archive_cleanup_command的目的是提供一种清除不再被后备服务器需要的旧的已归档WAL文件的机制。任何%r会被替换为包含最后一个可用重启点的文件的名称。那是使一次恢复变成可重启的所必须被保留的最早的文件,因此,比%r更早的所有文件可以被安全地移除。这个信息可以被用来把归档清空为支持从当前恢复重启所需的最小值。对于单一后备配置,ux_archivecleanup模块常常被用在archive_cleanup_command中,例如:

archive_cleanup_command = 'ux_archivecleanup /mnt/server/archivedir %r'

但是注意,如果多个后备服务器正在从同一个归档目录中恢复,你将需要保证只有当劝拿庞蜗菲教ㄗ⒉嵬锯服务器都不再需要WAL文件时才会删除它们。archive_cleanup_command通常被用于一种热后备配置中。要在该命令中嵌入一个真正的%字符,需要写成%%

如果该命令返回一个非零退出状态,则将会写出一个警告日志消息。一个例外是如果该命令被一个信号或者一个shell错误(例如命令未找到)终止,则会抛出一个致命错误。

recovery_end_command (string)

这个参数指定了一个将只在恢复末尾被执行一次的shell命令。这个参数是可选的。recovery_end_command的目的是为复制或恢复之后的清除提供一种机制。与archive_cleanup_command中相似,任何%r会被替换为包含最后一个可用重启点的文件的名称。

如果该命令返回一个非零退出状态,则一个警告日志消息将被写出并且该数据库将继续启动。一个例外是如果该命令被一个信号或者shell错误(例如命令未找到)中止,该数据库将不会继续启动。

XML 地图 | Sitemap 地图