2

在我的 postgesql 数据库中,不幸的是我截断了这个表mail_group,并且该表已从数据库中删除,如何取回该表。

请帮助我,等待回复。

谢谢

4

1 回答 1

2

处于相同情况的其他任何人:立即停止数据库pg_ctl stop -m immediate(这immediate很重要,您需要模拟崩溃并防止检查点)然后不要重新启动它。. 如果您还有正在进行的并发事务,您可能真的很幸运,并且 PostgreSQL 可能尚未取消链接表的支持文件,因此它可能是可恢复的。


您很可能无法取回数据,您将其删除。从备份中恢复。

PostgreSQL 中的 normalDELETE将行标记为已删除,但实际上并不会立即擦除数据,因此如果您立即停止数据库并且不向表中写入任何其他内容,通常可以将其恢复。

情况并非如此TRUNCATETRUNCATE从文件系统中删除表示数据库表的基础文件。

如果可能的话,恢复数据需要对您的硬盘进行取证分析。如果数据真的很重要,那么现在关闭计算机并获取硬盘驱动器的磁盘映像。如果可能的话,预计恢复工作将花费数千美元,因为您需要了解 (a) 文件系统内部和 (b) PostgreSQL 内部的人。我能想到的唯一一个有能力做到这一点的人可能会花费大约 5000 到 10000 欧元来完成此类工作所需的时间。(不是我)。

如果您没有备份,那么您只是学到了非常昂贵的一课。


如果其他人正在阅读此行和DELETEd 行,请立即按照损坏中的说明进行操作,因为第一个恢复步骤是相同的​​。如果你跑了,这将无济于事TRUNCATE

于 2015-02-06T04:38:37.620 回答