Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从旧服务器还原原始PostgreSQL备份?_Postgresql_Database Backups - Fatal编程技术网

从旧服务器还原原始PostgreSQL备份?

从旧服务器还原原始PostgreSQL备份?,postgresql,database-backups,Postgresql,Database Backups,我能找到的所有指南都表明迁移psql数据库非常容易。只需在一端调用pg_dump,然后在另一端将其吸干即可。如果你记得pg\u dump,那真的很简单 大约两年前,我将一台服务器从一台破旧的32位服务器迁移到一台更新、更新的64位服务器。我备份了essentials(/etc、/var、/home等),但由于当时对它很陌生,我完全忽略了PostgreSQL,没有在新服务器上还原它 听起来奇怪吗?客户只在Moodle站点上使用它,他们一个月只使用一次,而且一直都不需要它。今天是满月。客户很生气,因

我能找到的所有指南都表明迁移psql数据库非常容易。只需在一端调用
pg_dump
,然后在另一端将其吸干即可。如果你记得
pg\u dump
,那真的很简单

大约两年前,我将一台服务器从一台破旧的32位服务器迁移到一台更新、更新的64位服务器。我备份了essentials(/etc、/var、/home等),但由于当时对它很陌生,我完全忽略了PostgreSQL,没有在新服务器上还原它

听起来奇怪吗?客户只在Moodle站点上使用它,他们一个月只使用一次,而且一直都不需要它。今天是满月。客户很生气,因为他们的数据库不可用

我仍然拥有初始备份中的所有
/var/lib/postgresql/9.1/…
文件。我可以尝试替换新的
/var/lib/postgresql/9.3/…
文件,但这也是另一个问题,我读过几篇文章,认为这行不通。我不想事情变得更糟


有没有一种好方法可以还原这个旧数据库,或者以某种方式将其转换为可以重新导入的中性纯文本SQL?

您是正确的,64位PostgreSQL无法读取32位PostgreSQL数据目录。9.3也无法读取9.1数据目录

您需要32位PostgreSQL 9.1才能访问此文件

由于您的x86_64 CPU可以运行32位二进制文件而无需仿真,因此您有两个选项:

  • 使用Debian/Ubuntu软件包直接在当前系统上安装32位PostgreSQL 9.1,并引入任何必需的32位库。我可能会先试试这个,因为它可能是最简单的。检查您的操作系统是否有32位9.1二进制文件

  • 如果失败,请启动一个虚拟机,运行使用libvirt+kvm、Vagrant+virtualbox等创建数据目录的原始操作系统,然后从其上的原始操作系统包安装PostgreSQL 9.1

  • 作为最后一种选择,您可以安装一个32位gcc和相关的PostgreSQL依赖项(
    apt get build essential:i386
    apt get build dep PostgreSQL:i386
    ,我想,但我手头没有Debian/Ubuntu机器可供测试),然后使用该工具链为i386编译PostgreSQL 9.1

无论采用哪种方式,您都希望使用9.1二进制文件to
PATH=/PATH/to/9.1/bin pg_ctl-D/PATH/to/copy/of/database-w start
PostgreSQL,然后
pg_dump
it-如果可能,使用9.3中新的
pg_dump
。我强烈建议对每个要转储的数据库使用
pg_dumpall--globals only
,然后使用
pg_dump-Fc


现在检查您的备份,确保将来定期转储。

64位PostgreSQL无法读取32位PostgreSQL数据目录,这是正确的。9.3也无法读取9.1数据目录

您需要32位PostgreSQL 9.1才能访问此文件

由于您的x86_64 CPU可以运行32位二进制文件而无需仿真,因此您有两个选项:

  • 使用Debian/Ubuntu软件包直接在当前系统上安装32位PostgreSQL 9.1,并引入任何必需的32位库。我可能会先试试这个,因为它可能是最简单的。检查您的操作系统是否有32位9.1二进制文件

  • 如果失败,请启动一个虚拟机,运行使用libvirt+kvm、Vagrant+virtualbox等创建数据目录的原始操作系统,然后从其上的原始操作系统包安装PostgreSQL 9.1

  • 作为最后一种选择,您可以安装一个32位gcc和相关的PostgreSQL依赖项(
    apt get build essential:i386
    apt get build dep PostgreSQL:i386
    ,我想,但我手头没有Debian/Ubuntu机器可供测试),然后使用该工具链为i386编译PostgreSQL 9.1

无论采用哪种方式,您都希望使用9.1二进制文件to
PATH=/PATH/to/9.1/bin pg_ctl-D/PATH/to/copy/of/database-w start
PostgreSQL,然后
pg_dump
it-如果可能,使用9.3中新的
pg_dump
。我强烈建议对每个要转储的数据库使用
pg_dumpall--globals only
,然后使用
pg_dump-Fc


现在检查您的备份,确保将来定期转储。

64位PostgreSQL无法读取32位PostgreSQL数据目录,这是正确的。9.3也无法读取9.1数据目录

您需要32位PostgreSQL 9.1才能访问此文件

由于您的x86_64 CPU可以运行32位二进制文件而无需仿真,因此您有两个选项:

  • 使用Debian/Ubuntu软件包直接在当前系统上安装32位PostgreSQL 9.1,并引入任何必需的32位库。我可能会先试试这个,因为它可能是最简单的。检查您的操作系统是否有32位9.1二进制文件

  • 如果失败,请启动一个虚拟机,运行使用libvirt+kvm、Vagrant+virtualbox等创建数据目录的原始操作系统,然后从其上的原始操作系统包安装PostgreSQL 9.1

  • 作为最后一种选择,您可以安装一个32位gcc和相关的PostgreSQL依赖项(
    apt get build essential:i386
    apt get build dep PostgreSQL:i386
    ,我想,但我手头没有Debian/Ubuntu机器可供测试),然后使用该工具链为i386编译PostgreSQL 9.1

无论采用哪种方式,您都希望使用9.1二进制文件to
PATH=/PATH/to/9.1/bin pg_ctl-D/PATH/to/copy/of/database-w start
PostgreSQL,然后
pg_dump
it-如果可能,使用9.3中新的
pg_dump
。我强烈建议使用
pg_dumpall--globals only