恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。
l pg_is_in_recovery()
描述:如果恢复仍然在进行中则返回true。
返回值类型:bool
l pg_last_xlog_receive_location()
描述:获取最后接收事务日志的位置并通过流复制将其同步到磁盘。当流复制正在进行时,事务日志将持续递增。如果恢复已完成,则最后一次获取的WAL记录会被静态保持并在恢复过程中同步到磁盘。如果流复制不可用,或还没有开始,这个函数返回NULL。
返回值类型:text
l pg_last_xlog_replay_location()
描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。
返回值类型:text
l pg_last_xact_replay_timestamp()
描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。
返回值类型:timestamp with time zone
恢复控制函数控制恢复的进程。这些函数可能只在恢复时被执行。
l pg_is_xlog_replay_paused()
描述:如果恢复暂停则返回true。
返回值类型:bool
l pg_xlog_replay_pause()
描述:立即暂停恢复。
返回值类型:void
l pg_xlog_replay_resume()
描述:如果恢复处于暂停状态,则重新启动。
返回值类型:void
当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。
如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。