postgresql - 我截断了一个表。我如何取回数据?

标签 postgresql data-recovery undelete

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

请帮助我,等待回复。

谢谢

最佳答案


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


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

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

TRUNCATE 的情况不是TRUNCATE 从文件系统中删除表示数据库表的基础文件。

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

如果您没有备份,您就已经吸取了非常昂贵的教训。


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

关于postgresql - 我截断了一个表。我如何取回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28321999/

相关文章:

postgresql - 如何计算销售成本

postgresql - text2ltree的错误

python - 恢复以前的 Spyder 控制台的输出

linux - 恢复格式化分区

svn - 取回已删除的 .svn 文件夹

java - 无法获得与 PostgreSQL 的 JDBC 连接

sql - Postgres : function with select and notify

java - 如何在 Mac 上恢复已删除的 java 文件?

git - 如何在 git rm 并推送到 github 后取消删除文件?

restore - 在R中使用 "unlink"后如何取回文件?