操作手册 · 数据库与存储

待环境验证

PostgreSQL 时间点恢复与数据验证手册

核验完整基础备份、连续 WAL、timeline 和明确时区,在隔离空实例暂停到目标点,记录业务样本、恢复耗时及正式接管边界。

PostgreSQL监控告警高可用
阅读导引 · 理解后再操作

这篇知识解决什么问题

本篇把恢复目标定义成能够用业务样本否证的历史边界,再解释基础备份、连续 WAL、timeline 和真实暂停状态怎样共同支持结论。诊断只读取已批准材料与隔离实例证据,不启动恢复或提升;历史状态正确也不意味着已经能够接管生产写入。

恢复目标必须能区分保留和排除

误操作发生前是业务描述,数据库恢复需要对应提交边界、时区和历史分支。提前列出应保留、应排除和允许舍弃的样本,可以让恢复结果被明确否证;如果只有可登录和数据总量等宽泛指标,即使恢复到错误时间也可能被误判为符合业务目标。

恢复输入和运行结果分别验收

基础备份校验回答副本文件是否符合清单,连续归档回答能否抵达目标,暂停与业务样本回答实际停在哪里。三层条件缺一都不能推出成功,工具通过不会自动覆盖额外 WAL 或跨系统一致性;应保留各自材料身份、检查范围和未完成结论。

进入文章正文
关联架构图解6 个组件 · 点击展开

借用场景图观察基础备份与 WAL 两类数据输入,以及目标审批和只读样本验收。该图只覆盖隔离空实例的逻辑恢复,不是主备切换拓扑,没有展开真实表空间、外部订阅和正式接管步骤。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

PostgreSQL 基础备份与连续 WAL 的隔离 PITR 架构

完整物理基础备份和连续 WAL 汇入新的隔离实例,按批准时间与 timeline 回放后暂停;使用受限业务样本验收,不自动提升或接收流量。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

PostgreSQL 基础备份与连续 WAL 的隔离 PITR 架构:组件关系图完整物理基础备份和连续 WAL 汇入新的隔离实例,按批准时间与 timeline 回放后暂停;使用受限业务样本验收,不自动提升或接收流量。 原 PostgreSQL → 完整物理基础备份:已批准物理备份;原 PostgreSQL → 连续 WAL 归档:持续归档材料;完整物理基础备份 → 隔离恢复实例:还原基础文件;连续 WAL 归档 → 隔离恢复实例:连续 WAL 回放;恢复目标审批 → 隔离恢复实例:目标与暂停约束;隔离恢复实例 → 只读业务核验:受限样本与状态。箭头说明见下方流向解读。
PostgreSQL 17 PITR 逻辑参考图;不是流复制切换图,不表示已有可恢复备份或已完成演练,生产回接不在本图范围。

恢复目标审批

控制 / 治理

指定目标前保留、错误事务排除和目标后可舍弃的样本,确认数据取舍责任人与恢复边界。

全部组件职责 6 个组件
恢复目标审批
指定目标前保留、错误事务排除和目标后可舍弃的样本,确认数据取舍责任人与恢复边界。
完整物理基础备份
保护完整基础备份和 manifest,确认大版本、表空间映射及校验;逻辑导出不能替代此输入。
原 PostgreSQL
提供已批准的备份及 WAL 来源信息,不为演练制造生产写入,也不覆盖原数据目录。工具介绍 原 PostgreSQL
隔离恢复实例
独立数据盘、表空间、网络和外部依赖,配置正确目标与 recovery.signal,达到目标后核实真实暂停。工具介绍 隔离恢复实例
连续 WAL 归档
从基础备份起点覆盖到目标,连同 timeline 历史和取回权限逐项核对;最近归档成功不能证明无缺段。
只读业务核验
检查目标前数据、错误事务排除、目标后边界和必要权限;记录技术恢复与业务样本的独立结论。
流向解读 6 条连接
  1. 1

    原 PostgreSQL 完整物理基础备份

    数据 / 请求 · 已批准物理备份

    备份身份与源系统对应,恢复操作使用受控副本并保留原件。

  2. 2

    原 PostgreSQL 连续 WAL 归档

    数据 / 请求 · 持续归档材料

    表达原有归档提供 WAL 的数据关系,不表示本站新建归档任务。

  3. 3

    完整物理基础备份 隔离恢复实例

    数据 / 请求 · 还原基础文件

    只写入独立空实例与新表空间,源目录、备份原件均不覆盖。

  4. 4

    连续 WAL 归档 隔离恢复实例

    数据 / 请求 · 连续 WAL 回放

    使用经过审阅的取回配置重放到批准时间和 timeline,缺段时停止而非跳过。

  5. 5

    恢复目标审批 隔离恢复实例

    控制 / 管理 · 目标与暂停约束

    恢复目标只选择一类主要条件并核对时区和边界,暂停意图还需实际状态证明。

  6. 6

    隔离恢复实例 只读业务核验

    观测 / 查询 · 受限样本与状态

    以只读范围查询恢复状态及精确样本,不运行跨系统生产补偿。

故障域与操作边界

复制切换不能撤销已复制错误

副本可能已重放错误事务,高可用不能替代独立物理备份与连续归档。

恢复目标必须保持隔离

不注册原有选主服务,不连接生产消息、回调或归档写入目的地,表空间和符号链接不能指向源库。

新写入后不能直接切回旧入口

正式接管必须评审旧写入口隔离、数据差异与外部补偿;本轮只验证隔离实例的历史状态。

架构依据与版本核对 1 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与验证状态

本手册面向 PostgreSQL 17 的完整物理基础备份与归档 WAL 时间点恢复演练,状态为待验证(PENDING)。它不实施生产恢复,不执行文中命令,也不表示本站已有可用备份、已达到 RPO/RTO 或完成业务验收。其他大版本、托管服务和第三方备份工具必须先核对对应版本与供应商流程;增量备份链需先按其规范合成为可恢复的完整备份,不直接套用本流程。

PITR 处理误更新、误删除等需要回到历史状态的问题;主备切换主要恢复服务可用性,副本可能已经重放了错误事务,因此二者不能互相替代。演练只恢复到与原集群隔离的独立空实例,不覆盖生产数据目录,不修改生产代理和 DNS,不连接原有选主编排。恢复成功也不自动接收业务流量。

一、把恢复目标写成可以否证的条件

先登记事故或演练编号、数据负责人、批准窗口、原集群标识、备份标识及目标时间。目标必须使用明确 UTC 偏移,例如 2026-09-01 02:15:00+00 仅为虚构示例,不能直接照搬;同时记录来源日志的时区和时钟偏差。业务所说的“误操作之前”需要落实到数据库提交证据,界面点击时间不一定等于事务提交时间。

建议由业务方提供三类已存在的验收记录:目标前应保留的样本、错误事务不应出现的样本、目标后允许舍弃的样本。不要在生产中新建测试订单或执行破坏性事务来生成演练材料。事前明确可接受的数据缺口、隔离恢复耗时及最终接管耗时的不同口径,缺少记录时标记无法确认,而不是把空白填成零。

二、证明备份与归档链属于同一个集群

核对完整基础备份清单、开始与结束位置、系统标识、数据库大版本、表空间映射、校验清单和保留期限。必须拥有从基础备份起点到目标位置所需的连续 WAL,以及所选 timeline 的历史文件。逻辑导出不能充当物理基础备份,单独复制当前数据目录也不等于一套一致的在线备份。相关机制见 PostgreSQL 17 连续归档与 PITR

归档任务近期成功只能说明近期文件传输状态,不能证明历史窗口连续可恢复。演练前保留源备份的不可变副本;从对象存储取回资料时核对精确对象版本、解密权限及完整性,访问凭据由受保护身份注入,不写进脚本、URL、工单或页面截图。出现缺段、解密失败或来源不明,停止进入启动阶段,不能补造同名 WAL 或跳过错误继续宣称成功。

三、在只读副本上核验基础备份

以下是待人工审阅的命令示例,不由本站执行。OPS_PITR_BASE 应指向已解包为 plain 格式的完整备份副本;OPS_PITR_WAL 指向已核对的归档取回目录,二者都不能指向运行中的生产目录。先确认磁盘与读取 I/O 预算,再由获批执行人运行匹配 PostgreSQL 17 的工具。

OPS_PITR_BASE='/REPLACE_WITH_VERIFIED_BACKUP_COPY'
OPS_PITR_WAL='/REPLACE_WITH_VERIFIED_WAL_COPY'
pg_verifybackup --version
pg_verifybackup --exit-on-error --wal-directory="$OPS_PITR_WAL" "$OPS_PITR_BASE"

保存退出码和脱敏摘要。pg_verifybackup 按 manifest 检查文件及基础备份恢复所需 WAL,不会验证额外 WAL 的整个目标窗口,也不能替代服务器启动和业务核验。不得使用跳过校验、忽略缺失文件等选项使报告变绿;具体限制见 pg_verifybackup。若读取影响同盘业务,先停止校验,换用受控副本或新的批准窗口。

四、隔离实例与外部副作用

准备独立主机、容器或虚机,以及此前未使用的空数据目录和独立表空间目标。由双人复核实例清单、实际挂载、符号链接终点与剩余容量,尤其禁止恢复出的表空间链接仍指向生产磁盘。只允许恢复管理员访问;导入数据仍可能含敏感信息,隔离区同样需要访问审计和到期清理制度。

网络策略必须阻断恢复副本访问生产写接口、邮件、消息队列和第三方回调。检查继承配置、postgresql.auto.conf、扩展启动参数、订阅连接与定时任务,把原有流复制连接、选主编排注册和归档写入目的地作为明确核对项。不能只改监听端口便认定隔离完成。启动前由负责人确认还原配置不会重新接入原集群,任意依赖不明就暂停,保留副本以便重新设计。

五、审核恢复配置而不直接推广为通用脚本

下面片段只表达配置意图,不是可直接部署的配置。恢复管理员需按备份工具生成隔离实例配置,并在其数据目录设置 recovery.signal。归档读取命令必须使用该工具经测试的取回逻辑,正确处理 %f%p 和找不到文件时的退出状态;本文不提供未经环境验证的复制命令。

# 示例仅用于评审;目标时间和 timeline 必须替换为已批准证据。
recovery_target_time = '2026-09-01 02:15:00+00'
recovery_target_inclusive = off
recovery_target_timeline = '3'
recovery_target_action = 'pause'
hot_standby = on

inclusive 决定是否包括恰好落在目标上的事务;timeline 必须与目标历史分支对应,不能无条件使用默认 latest。同一次恢复只选定一种主要目标条件,参数与时区由两人确认。pause 配合 hot standby 用于停在目标后只读检查;恢复未达到已设目标就结束会报错,不能把错误退出当作完成。语义以 恢复目标参数 为准。

六、证明停在目标而不是仅仅可以连接

启动由批准的恢复执行人通过既有服务管理方式完成,本手册不启动任何实例。观察启动日志、实际读取的归档分支和恢复目标提示,同时记录磁盘、I/O 与耗时。以下只读 SQL 仅在已确认身份的隔离测试连接执行;超时预算按审批设置,不能用生产默认连接代替。

BEGIN READ ONLY;
SET LOCAL statement_timeout = '5s';
SHOW server_version;
SELECT pg_is_in_recovery(), pg_last_wal_replay_lsn(),
       pg_last_xact_replay_timestamp();
COMMIT;

先确认 pg_is_in_recovery() 为真,再由具有相应只读核验权限的执行人查询 pg_get_wal_replay_pause_state(),结果应为 paused 而非仅 pause requested。最后回放事务时间不一定恰好等于目标时间,必须与日志、配置和业务样本联合判断。恢复信息函数 定义了这些状态,不应凭一个布尔值宣布完整恢复。

七、业务核对、停止与重新尝试

按预先批准的精确主键执行小范围只读核对,记录查询范围、实际值摘要和验收人。必要扩展、表空间、权限和关键报表入口都应纳入清单;全表计数或一致性校验若超出预算,改用已批准样本并公开覆盖限制。检查订单、账务、消息等跨系统关系时,只使用隔离样本,不尝试重新发送生产事件来“补齐”状态。

若目标选晚、错误事务仍存在、timeline 不符或数据证据冲突,保持业务入口隔离,保存日志与副本。需要回到更早目标时,应重新从受保护备份恢复到新的空位置,不在已回放的数据上倒放 WAL。即使只想向后继续恢复,也必须重新审批目标与配置,不能随手调用恢复继续或提升函数。禁止自动 pg_promote、修改生产入口、删除生产 WAL 或覆盖备份。

八、验收记录与正式接管边界

建议报告逐项填写:备份及归档对象身份、版本与 timeline、含时区的目标、检查结果、实际暂停状态、业务样本结论、取回/回放/核验耗时、未覆盖范围和审批人。没有实测就继续标为 PENDING;恢复耗时与业务接管时间分别记录,不能合并成未经验证的容灾指标。

业务接管是独立变更:需要评审原写入口隔离、新旧数据差异、外部系统补偿、连接池重建、后续归档和新的备份计划。新实例一旦接受写入,直接切回旧实例可能丢失或分叉数据,不属于本演练的自动回退。演练结束后只按精确资产清单清理获批临时副本;源备份、归档和关键证据按保留制度继续保护。

相关站内内容

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 基础备份校验已有通过报告,但目标时间较晚,额外 WAL 和所选 timeline 的完整连续性仍没有证明。

    只读核对
    只读核对系统标识、备份起点、目标分支历史及归档对象清单,与校验报告实际检查范围逐项对应。
    如何判读
    报告可能只覆盖基础备份自身所需材料;历史归档缺段或分支不符时,不能用近期归档成功推断目标可达。
  2. 隔离实例可以连接且仍在恢复中,但日志没有清楚显示目标到达,或暂停状态仅为请求而非实际暂停。

    只读核对
    读取隔离实例身份、已有恢复日志、获准恢复状态与实际配置,核对目标时间、inclusive 和 timeline。
    如何判读
    可连接或处于恢复中都不足以证明停在批准目标;需结合真实暂停状态与业务样本,不能自行继续或提升。
  3. 技术检查看似正常,但应排除的错误事务仍在,或者目标前合法样本缺失,业务时间与数据库时间不一致。

    只读核对
    只读核对预先批准的精确样本、提交时间证据、统一时区及归档分支,保留支持和冲突结果而不修改数据。
    如何判读
    可能是目标边界、时区或材料归属错误;不能在现有回放数据上倒放 WAL,应由负责人重新评审独立恢复。
常见误区与判断边界 2 项

认为高可用副本就是历史恢复点

副本可能已经重放误操作,切换只能改变服务角色而不会自动撤销错误事务。PITR 依赖独立物理备份和连续归档,逻辑导出也不能直接替代这条数据链;应先确认问题是可用性故障还是历史数据恢复,不能因为已有副本就跳过备份边界核对。

把恢复后改回旧入口当成回退

隔离验证不授权接收业务,新实例一旦承接写入,两端可能产生新的数据差异和外部事件。切回 DNS 或连接池不会合并这些变化;应把旧写入口隔离、补偿、归档和新备份计划放在独立接管评审中,不将技术恢复成功写成自动可逆的生产变更。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 记录含明确时区的目标、所选 timeline、数据取舍责任人及三类业务样本,说明点击时间与事务提交证据之间的关系。
  • 保存完整基础备份、系统标识和从起点到目标的连续 WAL 清单,关联对象版本、校验范围及不能确认的历史归档段。
  • 归档隔离目标、表空间和外部依赖审阅结果,以及实际恢复日志、暂停状态和只读样本结论,保持生产入口不在范围。
  • 分别记录取回、回放与核验耗时、样本覆盖和未测试依赖,交接正式接管需另行评审的数据差异及恢复责任人。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。