神功大成!全网唯一可行的PG数据库drop/truncate表碎片恢复方法
关注公众号后在菜单中点击 “PDU下载” 即可获取PDU各个版本的下载链接
自从我接触Postgresql以来,网络上能搜索到的每一篇文章都告诉我:如果想要恢复误操作被drop table /truncate table的数据,除了通过备份以外,别无他法。
当前PDU已经支持了基本所有已知场景的Postgresql数据恢复,包括delete恢复、update恢复、直接从数据文件抽取数据恢复。
唯独还欠缺了drop table/truncate table场景下的数据恢复,因此这也是我的一个心结。
在PostgreSQL数据库中执行DROP或TRUNCATE操作时,不仅会从存储层面彻底清除表数据文件,还会直接修改磁盘的物理存储结构。并且与Oracle、Mysql、SQLServer不同,PostgreSQL的数据页存储结构中缺乏明确的对象标识信息,这导致数据恢复工作很大程度上需要依赖对文件系统残留信息的分析和重组,我本人对文件系统基本上没有任何研究,进一步增加了恢复难度和成本。
我原本也对这一功能不报希望,毕竟现网没有任何可行的方法,我又何必强逼自己呢。但是机缘巧合下,经过与惜分飞老师的反复探讨与验证(对我时不时的push与敲打),加上我的长期开发,我终于可以骄傲地宣布,PDU已经实现了一种可反复验证有效的、用于Postgresql数据库drop table/truncate table场景的、无备份数据恢复方式,并且将在社区版免费开放。
至于具体的使用方式,请大家参考: