27.2. 恢复目标设置

默认情况下,恢复将会一直恢复到 WAL 日志的末尾。下面的参数可以被用来指定一个更早的停止点。在recovery_targetrecovery_target_lsnrecovery_target_namerecovery_target_timerecovery_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 是在事务开始时顺序分配的,但是事务可能以不同的数字顺序完成。那些在指定事务之前(也可以包括该事务)提交的事务将被恢复。精确的停止点也受到recovery_target_inclusive的影响。

recovery_target_lsn (pg_lsn)

这个参数指定恢复将前进到的预写式事务日志位置的LSN。精确的停止点也受到recovery_target_inclusive的影响。这个参数使用系统数据类型pg_lsn解析。

下列选项进一步指定恢复目标,并且影响到达目标时会发生什么:

recovery_target_inclusive (boolean)

指定我们是否仅在指定的恢复目标之后停止(true),或者仅在恢复目标之前停止(false)。适用于recovery_target_lsnrecovery_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_standbypause设置的动作将和shutdown一样。