我不知道发生了什么......我认为闪电与它有关......在任何一种情况下,我的Windows 7机器上都不再存在曾经快乐且正在运行的PostgreSQL安装。甚至没有注册钥匙!所以我重新安装了一个新的PostgreSQL 9.3 postmaster和系统。
有没有办法找到包含我所有数据的旧数据库并将其重新放入新安装中? (如果有任何帮助,旧安装也是版本9.3,我在64位Windows 7终端上运行。新安装在驱动器C上。旧安装在驱动器E上。)。
请帮助任何人(我的所有数据都在该数据库中!)。
答案 0 :(得分:1)
如果此数据非常重要,那么在执行其他任何操作之前,您应该对计算机进行磁盘映像。获取硬盘的完整副本并将其放在安全的地方。在最小,获取整个旧PostgreSQL安装的完整副本 - 包含bin
,lib
,data
等的目录。如果您放置在PostgreSQL程序目录之外的非标准位置的data
目录,您也必须复制它。
在尝试任何恢复之前,您应始终复制已损坏系统的当前状态。如果不这样做会使问题变得更糟。在这种情况下,你当然不应该安装PostgreSQL的新副本而不确定发生了什么以及为什么 - 尽管我认为你可能在没有造成任何伤害的情况下离开了。
因此。完成了复制?没有?去做,然后回来。
行。首先,您需要确定您是否拥有完整的数据目录和安装位置,而且只是注册表状态等已经消失。在E:
中查看您的安装位置。某处有PostgreSQL\9.3\data
目录吗?最有可能的是。在这种情况下,最简单的选择是卸载9.3,然后使用与旧安装相同的位置重新安装它。它不会覆盖已经存在的数据目录(但无论如何你都复制了它,对吗?)并且所有内容都应该启动并且只是工作"。
如果失败,您可以通过postgresql
停止services.msc
服务,将data
空白新安装中的c:
目录重命名为data.old
,从data
复制旧e:
目录以替换它,使用“属性”中的“安全”选项卡将安全性和所有权设置为与data.old
的属性相同,然后启动服务备份services.msc
。
在任何一种情况下,新的PostgreSQL二进制文件必须是相同的主要(即9.3.x)和相同的体系结构。您不能使用32位PostgreSQL来读取64位PostgreSQL的数据库,反之亦然。
如果按照上述步骤操作时没有按预期工作,请查看Windows事件查看器以查找PostgreSQL服务中的错误,并查看PostgreSQL data\pg_log
目录中的PostgreSQL' s自己的错误日志。
如果您根本找不到数据目录,则会遇到麻烦。搜索PG_VERSION
个文件,或postgresql.conf
,pg_hba.conf
或pg_control
。这些文件通常存在于datadir(或global
的情况下的pg_control
子目录中)。如果你能找到它们,你可能找到了datadir,所以见上文。
如果您没有找到PG_VERSION
,pg_control
等的任何迹象,是时候致电数据取证公司询问其成本是多少尝试从可能的文件系统损坏或意外删除PostgreSQL数据库中恢复。
期望支付数百,最低,通常是几千。
您描述的症状适合系统还原,在检测到注册表配置单元损坏或一些阻止计算机启动的类似严重错误后,将计算机的状态恢复到较早的时间点。
如果是这种情况,那么您可能没问题,因为它不会删除您现有的文件。
除非你知道情况确实如此,否则我会非常怀疑这台计算机。我做了S.M.A.R.T磁盘自检,我还做了文件系统检查(硬盘驱动器号上的属性选项卡)。我查看Windows事件查看器日志以查看报告的错误。如果有疑问,我会更换系统。