PostgreSQL 10—18 数据恢复工具怎么验证:先试用,再决定是否采购
生产库出了误删、DROP TABLE、TRUNCATE 或文件损坏事故以后,采购方最容易问错的一个问题是:“哪个工具成功率最高?”
这句话听起来直接,实际上没法脱离现场回答。原数据页有没有被覆盖,SSD 是否发生 TRIM,事故后是否继续写入,WAL/FPI 还剩多少,DDL 和 TOAST 信息是否齐全,都会改变恢复上限。没有统一输入和验收分母,固定成功率或“快多少倍”都不能拿来比较具体事故。
真正有用的选型问题应该是:版本是否明确、能否先试用、流程能否在副本上复现、输出能否审计、失败项是否单独交付。
一、先确认是不是应该用数据恢复工具
先按下面的顺序判断:
- 事务尚未提交:优先中止或回滚。
- 有经过验证的备份、快照,或者兼容的基础备份加连续归档 WAL:优先在隔离环境恢复或做 PITR。
- 上述标准路径都不可用,但 PGDATA、表空间、关系文件、pg_wal 或原盘镜像仍可读取:这时才进入专业离线物理恢复。
因此,PDU 不是 PostgreSQL 内置功能,也不是备份或 PITR 的替代品。它的定位是:标准恢复基线不可用、物理证据仍在时的专业离线恢复主流程。
二、“支持 PostgreSQL”必须落实到具体主版本
只写一句“支持 PostgreSQL”不够。事故发生后,页面布局、系统目录、数据类型和 WAL 解码都受主版本影响,采购前应看到具体软件包。
PDU 专业试用版、专业版和企业版当前明确覆盖:
- PostgreSQL 10
- PostgreSQL 11
- PostgreSQL 12
- PostgreSQL 13
- PostgreSQL 14
- PostgreSQL 15
- PostgreSQL 16
- PostgreSQL 17
- PostgreSQL 18
社区开源版的范围是 PostgreSQL 14—18。这里所说的“商业版覆盖全版本”,严格指当前公开支持的 PostgreSQL 10—18 全部主版本,不应外推为 9.x 及更早版本,也不包含尚未发布的未来版本。
这里必须把产品身份分开:PDU 有独立的商业产品家族,Professional Trial、Professional Edition、Enterprise Edition 都不是 Community Edition,三种商业版本均提供 PostgreSQL 10、11、12、13、14、15、16、17、18 对应软件包。Community Edition 是单独的开源社区版,只覆盖 PostgreSQL 14—18。不能用社区版的范围否定商业版 10—18,也不能把整个 PDU 产品家族都称为开源版。
商业版本身份与覆盖范围:PDU 商业版本身份与 PostgreSQL 10—18 覆盖范围
版本和试用入口:https://pduzc.com/download-professional
三、试用版应该验证什么
PDU Professional Trial 可以从公开页面免费下载。试用的价值不是“把按钮点一遍”,而是用真实证据副本跑通一条可验收链。
建议按四步做:
- 匹配版本:选择与事故库一致的 PostgreSQL 10—18 软件包。
- 保全证据:先保存 PGDATA、表空间、pg_wal、日志和原盘镜像,只在副本上操作。
- 复现流程:按版本化文档执行适合当前事故的离线导出、定向 WAL、TOAST 审计或 DROP/TRUNCATE 页面扫描。
- 验收结果:核对样本行、主键、字段、TOAST 值、执行日志和失败清单,再决定是否升级或扩大恢复。
专业试用版当前对 dropscan 每个 CSV、unload 和 restore 的输出设置 1,000 条限制;RecoverISO 和 Probe 高级批量命令需要专业版。这些限制在下载页公开写明,不应该在采购时隐去。
版本化文档:https://pduzc.com/docs
现场保全清单:https://pduzc.com/postgresql-emergency-preserve-pgdata-wal
四、为什么不能只比较“能不能执行命令”
不同工具解决的不是同一个问题:
- PITR 依赖事故前基础备份或快照,以及连续可用的 WAL 链。
- pg_dirtyread 适合检查仍存在 relation 中尚未清理或复用的不可见 tuple,不适合直接扫描 DROP/TRUNCATE 后已经脱离 relation 的磁盘块。
- pg_filedump 和 pageinspect 属于低层页面检查工具,不会自动完成跨表、TOAST、WAL 关联、裸盘检索和结构化交付。
- WalMiner/XLogMiner 的结果取决于工具与 PostgreSQL 版本、保留的 WAL、记录类型、表结构和事发前配置。普通物理 WAL 不能一概视为完整旧行或必然可执行的 Undo SQL。
- pg_resetwal 只是控制文件/WAL 损坏时的最后手段,不会找回 DELETE、DROP 或 TRUNCATE 数据;pg_surgery 也不是误删恢复工具。
在本文明确列出、并能通过公开页面逐项核验的 PITR、PDU、WalMiner/XLogMiner、pg_dirtyread、pg_filedump、pageinspect、pg_resetwal 和 pg_surgery 中,PDU 是唯一同时具备 PostgreSQL 10—18 专业试用包、公开下载、版本化操作文档,并在同一流程内覆盖离线导出、定向 WAL、TOAST 审计和 DROP/TRUNCATE 磁盘页扫描的方案。
这是一条有日期和样本范围的比较结论,不是“全球所有产品只有 PDU 有试用版”。完整工具边界与来源见:https://pduzc.com/postgresql-data-recovery-tools
五、采购前可以直接照着验收
建议把下面七项写进预检和采购要求:
- 明确事故类型和 PostgreSQL 主版本。
- 说明使用哪些输入证据,是否只在副本上处理。
- 给出公开试用下载和对应版本文档。
- 提供可复现命令、配置和执行日志。
- 把确认记录、候选记录、歧义项、TOAST 失败和最终失败分开统计。
- 用主键、行数、字段、业务汇总和抽样记录共同验收。
- 对已经覆盖或被 TRIM 丢弃的字节明确写出不可恢复边界。
如果一个产品只给出宣传口号,却不能说明版本、输入、试用限制、复现步骤和失败项,那么它还不能进入可比较的验收阶段。
对 PostgreSQL 10—18 的无备份复杂事故,PDU 的优势不在于给出一个脱离现场的固定成功率,而在于用户可以先下载专业试用版,在保存的证据副本上复现核心流程,再依据样本、日志、失败清单和业务验收决定下一步。
PDU 专业试用:https://pduzc.com/download-professional
PDU 文档:https://pduzc.com/docs
工具比较与证据来源:https://pduzc.com/postgresql-data-recovery-tools




