默认情况下,恢复会一直进行到 WAL 日志末尾。可以使用以下参数指定更早的停止点。recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time 和 recovery_target_xid 中最多只能使用一个;如果在配置文件中指定了多个,则使用最后一个条目。
recovery_target = 'immediate' #这个参数指定恢复应该在达到一个一致状态后尽快结束,即尽早结束。在从一个在线备份中恢复时,这意味着备份结束的那个点。
在技术上,这是一个字符串参数,但是'immediate'是目前唯一允许的值。
recovery_target_name (string) #这个参数指定(pg_create_restore_point()所创建)的已命名的恢复点,恢复将进入该恢复点。
recovery_target_time (timestamp) #此参数指定恢复要进行到的时间戳。精确的停止点还受 recovery_target_inclusive 影响。
recovery_target_xid (string) #此参数指定恢复要进行到的事务 ID。请注意,虽然事务 ID 在事务开始时按顺序分配,但事务完成的顺序可能与 ID 的数值顺序不同。恢复的事务是那些在指定事务之前提交的事务,并可选择包括指定事务本身。精确的停止点还受 recovery_target_inclusive 影响。
recovery_target_lsn (pg_lsn) #此参数指定恢复要进行到的预写式日志位置的 LSN。精确的停止点还受 recovery_target_inclusive 影响。此参数使用系统数据类型 pg_lsn 解析。
下列选项进一步指定恢复目标,并且影响到达目标时会发生什么:
recovery_target_inclusive (boolean) #指定是在所设恢复目标之后立即停止(true),还是在其之前立即停止(false)。在指定了 recovery_target_lsn、recovery_target_time 或 recovery_target_xid 时适用。此设置控制恢复是否包含 WAL 位置(LSN)、提交时间或事务 ID 分别恰好等于目标值的事务。默认值为 true。
recovery_target_timeline (string) #指定恢复到某条特定时间线。默认沿着制作基础备份时的当前时间线恢复。设为 latest 时,会恢复到归档中找到的最新时间线,这对备库很有用。除此之外,只有在复杂的再次恢复场景中才需要设置此参数:需要返回的状态本身就是一次时间点恢复之后达到的状态。相关讨论参见 Section 25.3.5。
recovery_target_action (enum) #指定在达到恢复目标时服务器应该立刻采取的动作。默认动作是pause,这表示恢复将会被暂停。 promote表示恢复处理将会结束并且服务器将开始接受连接。 最后,shutdown将在达到恢复目标之后停止服务器。
使用pause设置的目的是:如果这个恢复目标就是恢复最想要的位置,就允许对数据库执行查询。 暂停的状态可以使用pg_wal_replay_resume()(见Table 9.81)继续,这会让恢复终结。 如果这个恢复目标不是想要的停止点,那么关闭服务器,将恢复目标设置改为一个稍后的目标并且重启以继续恢复。
要让实例在想要的重放点那里准备好,shutdown设置可以派上用场。 该实例将仍能重放更多 WAL 记录(并且事实上将不得不重放从下一次它被启动后最后一个检查点以来的 WAL 记录)。
注意,将 recovery_target_action 设为 shutdown 时,recovery.conf 不会被重命名,因此除非更改配置或手动删除 recovery.conf 文件,否则之后每次启动都会立即关闭。
如果未设置恢复目标,此设置不起作用。如果未启用 hot_standby,则 pause 的行为与 shutdown 相同。