我是PostgreSQL的新手。 我必须恢复在寡妇XP机器上运行的数据库。
我有postgres的zip文件夹。
我已经提取postgres安装在不同的PC和启动使用initDB并创build一个新的数据库,我能够login,但我不能够看到任何旧表。
您能否将您在另一台Windows XP机器上启动服务器的步骤以及如何恢复旧数据文件夹中的表和数据?
理想情况下,你可以用pg_dump做一个转储,这样做会更容易一些。 坏办公室的人,没有cookies。
因为你有来自同一个版本的二进制文件,你可以节省一些麻烦。
C:\Users\Myusername\Desktop\postgresql
– 就本示例而言。 假设c:\users\myusername\desktop\postgresql
文件夹包含名为bin
, data
, lib
等的文件夹:
打开一个cmd.exe
shell
cd Desktop\postgresql
bin\pg_ctl.exe start -DC:\users\myusername\desktop\postgresql\data
bin\psql.exe -U mydbusername mydb
如果psql连接成功,请使用\q
命令断开连接,然后立即进行数据库转储:
bin\pg_dump.exe -Fc -U mydbusername -f mydb.dbbackup mydb
…并使用当前版本的pg_restore将其恢复到现代PostgreSQL版本。
如果在恢复到9.0或9.1等新版本时遇到问题,则可能需要使用新版本中的pg_dump连接到旧数据库并进行转储,而不是使用8.2中的pg_dump进行转储。 如果你不想设置转储到networking上,你可以将pg_dump从新机器复制到旧机器; 只需将新的PostgreSQL发行版中的“bin”目录拷贝到旧机器上的某个地方,然后从那里运行pg_dump即可。 单独复制只有pg_dump.exe将无法正常工作,因为它需要libpq和其他库。
请不要试图继续运行8.2,这是一个过时和不受支持的版本。 进入9.0或9.1。 这可能需要对代码进行一些更改; 请参阅自您的每个主要.0版本的发行说明 ,例如8.3.0,8.4.0,9.0.0和9.1.0以获取升级信息。
现在立即修复你的备份程序来安排一个每日pg_dump,所以这再也不会发生在你身上
如果你没有 PostgreSQL的二进制文件,你会怎么做。 当我看到你在zip文件中有二进制文件时,我已经写了它,我会保留在这里为其他人。
安装PostgreSQL 8.2 。 是的,它必须是8.2.x. 没有其他版本可以用于这个目的,因为PostgreSQL的原始数据文件只能在同一个主版本中兼容。 由于它是如此旧的版本,它可能不会与已经安装的当前版本共存,因此您可能必须使用备用机器或虚拟机。
一旦你安装了8.2,你知道它是由安装程序创build的空数据库的工作,closures服务控制面板(开始 – >运行 – > services.msc)
将数据目录重命名为data data-empty
。 我认为这是C:\Program Files\PostgreSQL\8.2\data
for 8.2,但我不记得确定。
将旧的数据源解压缩到您刚刚移动安装程序创build的数据目标的位置,因此它具有相同的名称和位置。 如果您运行的是非pipe理员帐户或UACpipe理员帐户,则可能实际上需要将其解压缩到其他位置,然后将其移至原位。
获取解压缩的数据目录的属性。 在安全选项卡中,给予“postgres”用户完全控制,并将其应用于其中的所有文件和文件夹。 这个很重要; 如果没有正确的权限,数据库将无法正常工作,解压后的副本将没有正确的权限。
从services.msc启动PostgreSQL服务
检查以确保服务正确启动。 如果没有,请在事件查看器中查看原因信息。 还要检查pg_log
目录中的日志,并确保一切看起来合理,这里没有错误。
尝试与psql
连接,看看你是否可以访问你的数据。 如果可以,请按照上面的build议做一个转储。 不要继续使用过时的数据库版本。
这样做使用Postgres.app工具是非常容易的。
刚刚去了首选项,改变了数据目录,并重新启动服务器。 就是这样。 我很惊讶 我认为在我的情况下版本是相同的。
克雷格林格的工作为我。
但是对于那些在我的Windows 10上安装Postgresql 8.2有困难的人,我build议创build一个Windows XP虚拟盒来实现。