recovery.conf文件详解

时间:2022-05-08 13:12:58

在恢复过程中,用户可以通过使用recovery.conf文件来指定恢复的各个参数,如下:

  • 归档恢复设置

    • restore_command:用于获取一个已归档段的XLOG日志文件的命令
    • archive_cleanup_command:清除不在需要的XLOG日志文件的命令
    • recovery_end_command:归档恢复结束后执行的命令
  • 恢复目标设置(默认情况下,数据库将会一直恢复到 WAL 日志的末尾)

    • recovery_target = ’immediate’:在从一个在线备 份中恢复时,这意味着备份结束的那个点
    • recovery_target_name (string):这个参数指定(pg_create_restore_point()所创建)的已命名的恢复点,将恢复到该恢复点
    • recovery_target_time (timestamp):这个参数指定恢复到的时间戳
    • recovery_target_xid (string):这个参数指定恢复到的事务 ID
    • recovery_target_inclusive (boolean):指定是否在指定的恢复目标之后停止(true),或者在恢复目标之前停止 (false);适用于recovery_target_time或者recovery_target_xid被指定的情况;这个设置分别控制事务是否有准确的目标提交时间或 ID 是否将被包括在该恢复中;默认值为 true
    • recovery_target_timeline (string):指定恢复到一个特定的时间线
    • recovery_target_action (enum):指定在达到恢复目标时服务器应该立刻采取的动作,包括pause(暂停)、promote(接受连接)、shutdown(停止服务器),其中pause为默认动作
  • 备库参数设置

    • standby_mode(boolean):为on表示作为一个备库,否则不为备库
    • primary_conninfo (string):指定备库连接主库的连接字符串
    • primary_slot_name (string):通过流复制指定主库的一个复制槽来复制主库数据,如果没有设置primary_conninfo,则此参数无效
    • trigger_file (string):指定一个触发器文件,该文件存在可以结束备库的恢复,即升级备库为一个独立的主库
    • recovery_min_apply_delay (integer):这个参数允许将恢复延迟一段固定的时间,如果没有指定单位则以毫秒为单位。

如果recovery.conf中同时指定了recoveryTargetXid、recoveryTargetName、recoveryTargetTime时,PostgreSQL会按照RECOVERY_TARGET_XID> RECOVERY_TARGET_NAME > RECOVERY_TARGET_TIME的优先级来获取最终的目标恢复位点。

如果在recovery.conf指定recovery_targetTimeLine为latest,则可以基于当前TimeLineID为起点寻找最新时间线:

  • 寻找当前TimeLineID的时间线历史文件“XXX.history”,如果存在则继续寻找,否则错误退出
  • TimeLineID是线性增长的,将当前TimeLineID自增1寻找是否存在时间线历史文件,直到不存在对应的时间线历史文件为止,即可找到最新的时间线。