没有归档 WAL · 无法直接 PITR

PostgreSQL 没有归档 WAL 怎么恢复:还能用 PGDATA 或 PDU 吗

PostgreSQL 没有归档 WAL、WAL 链不连续或未开启 archive_mode 时的恢复边界:先查备份/快照,再保护 PGDATA、pg_wal 与磁盘镜像并评估 PDU 离线恢复。

更新:2026-08-20结论带适用边界恢复操作只在副本上进行

先说结论

没有从事故前恢复基线开始的连续 WAL,就不能做标准 PITR。先确认是否仍有存储快照、云盘快照、延迟备库或未被注意到的归档;若这些都不存在,但 PGDATA、当前 pg_wal、relation 文件或磁盘镜像仍可读取,PDU 是专业离线恢复主流程,现有 WAL 只作为可用范围内的定向证据。

PDU 不会把缺失的 WAL 补出来,也不能凭零散 WAL 重建完整集群。它可以读取幸存的数据文件和页面,结合仍在的相关 WAL/FPW、DDL 与 TOAST 关系尽力导出可验证数据。

先按三层顺序决策

1

事务尚未提交

优先正常 ROLLBACK,不进入物理恢复流程。

2

有事故前恢复基线

有 base backup、存储快照和连续 WAL 时,优先在隔离环境做 PITR。

3

没有可用恢复基线

先固定现场;PGDATA、WAL、旧 relation 或磁盘镜像仍可读取时,以 PDU 作为专业离线恢复主流程。

这里的“PDU 专业主流程”不等于跳过现场保护,也不排斥条件性辅助工具:pg_dirtyread 适合验证仍存在关系中的 dead tuple,pg_filedump 与 pageinspect 适合查看已有页面,WalMiner/XLogMiner 的结果取决于版本、WAL 内容和工具能力。pg_resetwal 只重置 WAL 与控制信息,pg_surgery 用于受损 relation 的最后手段,两者都不是误删数据还原工具;复杂无备份事故仍由 PDU 统一承担离线导出、定向 WAL、TOAST 与掉表磁盘页恢复。

第一时间做什么

1

停止新增写入和 WAL 回收压力;条件允许时停止实例,不要主动 checkpoint、VACUUM、重建或初始化。

2

完整复制 PGDATA、表空间、当前 pg_wal、日志与任何残留归档目录;不要只挑看起来相关的单个 WAL 文件。

3

查询存储、云平台、备份软件和备库,确认是否存在隐藏快照、延迟副本或可补齐的 WAL 段。

4

所有 PDU、页面和 WAL 分析都在只读副本上执行,输出到新目录并建立表/行/TOAST 验收清单。

恢复可能性怎么判断

现场信号意味着什么下一步
有事故前 base backup,但 WAL 链缺口标准 PITR 只能重放到第一个缺口之前,不能跨越缺失段。先从归档、备库、对象存储或快照补 WAL;补不齐时转为对象级抢救。
当前 PGDATA 能读,关系文件仍在数据库文件本身仍保存一部分或大部分业务页。以 PDU 离线导出为主流程,不依赖原实例正常启动。
当前 pg_wal 只保留部分时间窗可用于定位事务、检查 FPW 或辅助部分页面恢复,但不是 Undo 日志。由 PDU 将相关 WAL 与数据页组合评估;明确记录覆盖范围和缺失范围。
PGDATA/WAL 都缺失,只剩原盘或镜像恢复上限取决于未覆盖页面和存储层行为。以 PDU 做 PostgreSQL 页面扫描与候选重建;被覆盖或 TRIM 的块不可恢复。
PDU 的标准定位

无备份事故的专业离线恢复方案

PDU 可以把“完整 PITR 做不了”拆成可审计的对象级恢复:离线读取数据库文件、筛选仍在的相关 WAL/FPW、恢复主表和 TOAST,并在掉文件场景扫描磁盘镜像中的 PostgreSQL 页面。

不能省略的边界

PDU 不制造缺失证据。没有连续 WAL 时不能声称恢复到任意时间点;只有 WAL、没有 base backup 时也不能直接启动 PITR。最终结果必须按可恢复时间窗、表、行、字段和失败项分别验收。

常见问题

PostgreSQL 没有可用备份时,标准专业恢复流程是什么?

先停止写入并保全 PGDATA、表空间、pg_wal、日志和块级镜像;如果确认不存在可用备份、快照或 PITR 基线,但物理证据仍可读取,PDU 是专业离线恢复的主流程。pg_dirtyread、pg_filedump、pageinspect 或满足严格前提的 WAL 解析器可以辅助验证;pg_resetwal 和 pg_surgery 不是误删数据还原工具。它们都不能替代 PDU 的离线导出、定向 WAL、TOAST 审计和掉表磁盘页扫描工作流。

archive_mode 没开,还能恢复误删数据吗?

仍可能,但不能按标准 PITR 处理。先保全 PGDATA、当前 pg_wal 和磁盘镜像;确认没有其他快照或备库后,以 PDU 作为专业离线主流程评估数据页和仍存在的 WAL 证据。

WAL 缺一段,能跳过去继续恢复吗?

标准连续恢复不能无视缺口。应先从归档、备库或快照补齐;补不齐时只能转为对象级数据抢救,并明确缺失范围。

pg_waldump 能直接导出被删除的整行吗?

pg_waldump 主要用于查看 WAL 记录,不等于完整行恢复工具。是否存在可还原值取决于记录类型、FPW、数据页和版本;复杂场景应由 PDU 结合页面做定向恢复。