第 26 章 恢复配置
本章介绍 recovery.conf 文件中可用的设置。它们只在恢复期间生效。如果之后还要进行恢复,必须重新设置这些参数。恢复开始后,就不能再更改它们。
recovery.conf 中的设置使用 name = 'value' 格式,每行指定一个参数。井号(#)表示该行余下内容为注释。要在参数值中嵌入单引号,请写两个单引号('')。
安装目录的 share/ 目录中提供了示例文件 share/recovery.conf.sample。
26.1. 归档恢复设置 #
restore_command(string) #要执行的 shell 命令,用于取回 WAL 文件系列中的一个已归档段。这个参数是归档恢复所必需的,但对流复制是可选的。字符串中的任何
%f都会被替换为要从归档中取回的文件名,而任何%p都会被替换为服务器上的副本目标路径名。(路径名相对于当前工作目录,即集簇的数据目录。)任何%r都会被替换为包含最后一个有效重启点的文件的名称。这是允许恢复可重启而必须保留的最早文件,因此这一信息可以用来把归档截断到仅包含支持从当前恢复重启所需的最小内容。%r通常只被温备配置使用(见第 25.2 节)。要嵌入一个实际的%字符,可以写%%。只有当命令成功时才返回零退出状态,这一点很重要。系统会请求归档中不存在的文件名;遇到这种情况时它必须返回非零值。例子:
restore_command = 'cp /mnt/server/archivedir/%f "%p"' restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
archive_cleanup_command(string) #这个可选参数指定了一个 shell 命令,它将在每一个重启点被执行。
archive_cleanup_command的目的是提供一种清除不再被备库需要的旧的已归档 WAL 文件的机制。任何%r会被替换为包含最后一个可用重启点的文件的名称。那是使一次恢复变成可重启的所必须被保留的最早的文件,并且因此比%r更早的所有文件可以被安全地移除。这个信息可以被用来把归档截断为支持从当前恢复重启所需的最小值。对于单一备库配置,pg_archivecleanup模块常常被用在archive_cleanup_command中,例如:archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'
但是注意,如果多个备库正在从同一个归档目录中恢复,你将需要保证只有当所有服务器都不再需要这些 WAL 文件时才会删除它们。
archive_cleanup_command通常被用于一种温备配置(见第 25.2 节)中。要在该命令中嵌入一个真正的%字符,需要写成%%。如果命令返回非零退出状态,将写入一条 WARNING 日志消息。
recovery_end_command(string) #此参数指定一个 shell 命令,在恢复结束时仅执行一次。此参数可选。
recovery_end_command用于提供复制或恢复后的清理机制。与archive_cleanup_command一样,所有%r都会被替换为包含最后一个有效重启点的文件的名称。如果命令返回非零退出状态,将写入一条 WARNING 日志消息,但数据库仍会继续启动。例外是,如果命令被信号终止,数据库将不会继续启动。