忘记备份了。现在我有带有数据库的硬盘和带有空 postgres 的新系统。我可以以某种方式恢复数据库吗?通过简单的文件副本等?
3 回答
如果您拥有旧 postgresql 系统的完整数据目录(并且如果它是相同的版本,或者仅在修订号上有所不同),您可以尝试将它放在新 postgresql 安装中的数据目录的位置。(当然,在这样做之前停止 postgres 服务器)。
这与升级postgresql 时使用的过程基本相同,不需要进行备份恢复。
编辑:正如评论中所指出的,我假设不仅相同(或几乎相同)版本,而且相同架构(32 - 64 位,Linux - Windows 等)
除了 leonbloy 的回答,您可以尝试pg_migrator,特别是如果您需要从 8.3 升级到 8.4(最终是 9.0)。
在你的情况下你有文件,但如果你没有,也许,只有也许,你可以对数据库的日志做一些事情,你可以尝试在 /var/log 中正常查看数据库中的语句日志/postgresql/postgresql.log,如果它在那里或靠近它,并且如果之前设置了log_statements = 'mod'或'all',你可以恢复你的一些数据。
逐个表,通过在所有或最近的数据库历史记录中插入此表进行搜索。您可以使用一些 Unix 工具剪切文本以仅获取语句并放置一个“;” 在每个语句的末尾,以及另一个重要的查询,如删除等。
但是您必须逐表进行,并且数据必须存在,并且数据库不会在没有备份的情况下运行太多时间。
在某些情况下,您只需要最后一次操作或类似的操作来节省时间。
然而,这只是阿波罗 13 号灾难时刻,永远无法取代一个好的备份。