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