在我的postgesql数据库中,不幸的是,我截断了这个表mail_group,该表是从数据库中删除的,我如何取回这个表。
请帮助我,等待答复。
谢谢
发布于 2015-02-06 04:38:37
在同样的情况下,任何其他人都可以:立即用pg_ctl stop -m immediate停止数据库( immediate很重要,您需要模拟崩溃并防止检查点),那么就不会重新启动它。__。如果并发事务仍在进行中,那么您可能非常幸运,而且PostgreSQL可能还没有解除表的备份文件链接,因此它可能是可恢复的。
你很可能拿不到数据,你把它删除了。从备份恢复。
普通的DELETE在PostgreSQL中将行标记为已删除,但实际上不会立即删除数据,因此,如果您立即停止数据库,并且不向表写入任何其他内容,则通常可以恢复数据。
对于TRUNCATE来说,情况并非如此。TRUNCATE从文件系统中删除表示数据库表的底层文件。
恢复数据,如果可能的话,需要对你的硬盘进行法医分析。如果数据确实很重要,那么现在就关掉计算机,并获取硬盘驱动器的磁盘映像。如果可能的话,预计恢复工作将花费数千美元,因为您需要一个同时了解(a)文件系统内部和(b) PostgreSQL内部结构的人。我能想到的唯一一个人,我知道谁有可能做到这一点,可能会花费约5000欧元至10000欧元,为这种工作所需的时间。(不是我)。
如果你没有备份,你刚刚学到了一个非常昂贵的教训。
如果其他人正在阅读此命令和DELETE__d行,请立即按照https://wiki.postgresql.org/wiki/Corruption中的说明进行操作,因为第一个恢复步骤是相同的。如果您运行TRUNCATE__,这将于事无补。
https://stackoverflow.com/questions/28321999
复制相似问题