1. PITR 的实现,PG 12+ 通过 recovery.signal/standby.signal 进入恢复模式,restore_command 配置在 postgresql.conf?
请说明 PostgreSQL 12+ 时间点恢复(PITR)的实现,包括 recovery.signal/standby.signal 进入恢复模式以及 restore_command 的配置?
- recovery.signal 与 standby.signal 的区别
- restore_command 的作用
- PITR 恢复流程
PostgreSQL 12+ 中,创建 recovery.signal 文件会进入恢复模式(recovery mode),创建 standby.signal 文件则进入 standby 模式(持续恢复)。基础备份恢复进行 PITR 时,在数据目录放置 recovery.signal,设置为 recovery_target_time 等目标,并在 postgresql.conf 中配置 restore_command(如 'cp /archive/%f %p')从归档目录拉取 WAL,恢复进程按归档 WAL 重放直到目标时间点,然后创建 recovery.done 结束恢复。standby.signal 用于备库持续恢复(流复制),不达到目标即停止。
recovery.signal 与 standby.signal 是 PG12+ 的恢复入口标记者,替代了旧版的 recovery.conf。restore_command 负责从归档获取 WAL,是 PITR 能否恢复的关键。理解两种 signal 的区别对搭建恢复与备库至关重要。
# postgresql.conf
restore_command = 'cp /backup/wal/%f %p'
recovery_target_time = '2026-06-01 12:00:00'
# 数据目录创建恢复标记
touch recovery.signal