![没有转储的 Postgresql 迁移](https://linux22.com/image/545672/%E6%B2%A1%E6%9C%89%E8%BD%AC%E5%82%A8%E7%9A%84%20Postgresql%20%E8%BF%81%E7%A7%BB.png)
您好,硬盘故障后,我恢复了 PostgreSQL 数据库,但操作系统无法运行。我尝试将其复制到另一台装有较新版本 PostgreSQL 的服务器,但我得到的只是:
发现数据库格式版本过旧。使用 PostgreSQL 之前,您需要升级数据格式。有关详细信息,请参阅 /usr/share/doc/postgresql-8.1.22/README.rpm-dist。
我不知道旧版本号。
请给我一些建议。
答案1
如果您能够获取数据目录中的所有文件,那么应该有一个 PG_VERSION 文件。使用该文件,您可以构建一个具有该版本的数据库。根据我的分析,如果没有具有正确版本的数据库,我找不到恢复数据库数据的方法。
如果您知道版本,请执行以下一些恢复步骤:
http://archives.postgresql.org/pgsql-general/2009-09/msg01152.php
如果你知道你的最新版本是 8.3 或更高版本,那么这应该有效:
http://www.postgresql.org/docs/9.0/static/pgupgrade.html
这不是一个令人愉快的答案。
答案2
关于查找 pg_version 文件的建议很好,而且您可能能够针对 $PGDATA 运行 pg_controldata 并获取一些信息。在最坏的情况下,只需继续安装主要版本(7.4.x、8.0.x、8.1.x 等...)直到找到兼容的匹配。
一旦数据库正在运行,您就可以根据需要升级。pg_dump / restore 是一种选择。pg_upgrade 可以在 8.3+ 上运行。您还可以选择使用复制系统(如 slony)进行跨版本复制(其运行效果取决于您最终使用的版本)。
但是,对于所有这些方法(包括 pg_upgrade),您都需要系统的运行副本,因此首先尝试找到匹配/兼容的版本。