选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16
测试与开发版本: 19 / devel
不受支持的版本: 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

第 26 章 恢复配置

本章介绍 recovery.conf 文件中可用的设置。它们只在恢复期间生效。如果之后还要进行恢复,必须重新设置这些参数。恢复开始后,就不能再更改它们。

recovery.conf 中的设置使用 name = 'value' 格式,每行指定一个参数。井号(#)表示该行余下内容为注释。要在参数值中嵌入单引号,请写两个单引号('')。

安装目录的 share/ 目录中提供了示例文件 share/recovery.conf.sample

26.1. 归档恢复设置 #

restore_command (string) #

用于获取 WAL 文件系列的一个已归档段的本地 shell 命令。这个参数是归档恢复所必需的,但是对于流复制是可选的。在该字符串中的任何%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的文件都可以被安全地移除。这个信息可以被用来把归档截断为支持从当前恢复重启所需的最小值。contrib中提供的pg_archivecleanup工具(见第 F.22 节)是典型的单备库配置中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 日志消息,但数据库仍会继续启动。例外是,如果命令被信号终止,数据库将不会继续启动。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。