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