在我的 postgesql 数据库中,不幸的是我截断了这个表mail_group
,并且该表已从数据库中删除,如何取回该表。
请帮助我,等待回复。
谢谢
在我的 postgesql 数据库中,不幸的是我截断了这个表mail_group
,并且该表已从数据库中删除,如何取回该表。
请帮助我,等待回复。
谢谢
处于相同情况的其他任何人:立即停止数据库pg_ctl stop -m immediate
(这immediate
很重要,您需要模拟崩溃并防止检查点)然后不要重新启动它。. 如果您还有正在进行的并发事务,您可能真的很幸运,并且 PostgreSQL 可能尚未取消链接表的支持文件,因此它可能是可恢复的。
您很可能无法取回数据,您将其删除。从备份中恢复。
PostgreSQL 中的 normalDELETE
将行标记为已删除,但实际上并不会立即擦除数据,因此如果您立即停止数据库并且不向表中写入任何其他内容,通常可以将其恢复。
情况并非如此TRUNCATE
。TRUNCATE
从文件系统中删除表示数据库表的基础文件。
如果可能的话,恢复数据需要对您的硬盘进行取证分析。如果数据真的很重要,那么现在关闭计算机并获取硬盘驱动器的磁盘映像。如果可能的话,预计恢复工作将花费数千美元,因为您需要了解 (a) 文件系统内部和 (b) PostgreSQL 内部的人。我能想到的唯一一个有能力做到这一点的人可能会花费大约 5000 到 10000 欧元来完成此类工作所需的时间。(不是我)。
如果您没有备份,那么您只是学到了非常昂贵的一课。
如果其他人正在阅读此行和DELETE
d 行,请立即按照损坏中的说明进行操作,因为第一个恢复步骤是相同的。如果你跑了,这将无济于事TRUNCATE
。