【问题标题】:I TRUNCATEd a table. How do I get the data back?我截断了一张桌子。如何取回数据?
【发布时间】:2015-04-04 00:16:43
【问题描述】:

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

请帮助我,等待回复。

谢谢

【问题讨论】:

标签: postgresql data-recovery undelete


【解决方案1】:

遇到同样情况的其他人:立即使用 pg_ctl stop -m immediate 停止您的数据库(immediate 很重要,您需要模拟崩溃并防止检查点)然后 不要重新启动它。。如果你还有正在进行的并发事务,你可能真的很幸运,PostgreSQL 可能还没有取消链接表的支持文件,所以它可能是可恢复的。


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

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

TRUNCATE 的情况不是TRUNCATE 从文件系统中删除代表数据库表的底层文件。

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

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


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

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2014-10-14
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多