在我的postgesql数据库中,遗憾的是我截断了这个表mail_group
,并且该表是从数据库中删除的,如何取回该表。
请帮助我,等待回复。
由于
答案 0 :(得分:2)
处于相同情况的其他人:立即使用pg_ctl stop -m immediate
停止您的数据库(immediate
很重要,您需要模拟崩溃并阻止检查点)然后不要重新启动它。。如果你的并发事务仍在进行中,你可能真的很幸运,PostgreSQL可能还没有取消链接表的后备文件,所以它可能是可以恢复的。
你很可能无法获取数据,你删除了它。从备份恢复。
PostgreSQL中的普通DELETE
将行标记为已删除但实际上并未立即删除数据,因此如果您立即停止数据库并且不向表中写入任何其他内容,则通常可以恢复它。
TRUNCATE
的情况 。 TRUNCATE
从文件系统中删除表示数据库表的基础文件。
如果可能的话,恢复数据需要对硬盘进行取证分析。如果数据真的很重要,请立即关闭计算机并拍摄硬盘的磁盘映像。如果可能的话,期望恢复工作花费数千美元,因为你需要知道(a)文件系统内部和(b)PostgreSQL内部的人。我能想到的唯一一个能够做到这一点的技能的人可能会花费5000到10000欧元来完成这种工作所需的时间。 (不是我)。
如果您没有备份,那么您刚刚学到了非常昂贵的课程。
如果其他人正在阅读此行和DELETE
行,请立即按照corruption中的说明操作,因为第一个恢复步骤相同。如果您运行TRUNCATE
。