3

我有一个损坏的虚拟机,它无法使用旧的 postgresql 数据库启动(用于运行 PostgreSQL 8.4)。我可以访问文件系统(和 pg_data 目录)。

如何从此数据目录中提取数据(或恢复数据库)?

是否像将这个目录的内容复制到一个工作的 8.4 pg_data 目录一样简单?

4

1 回答 1

4

其实基本上就是这么简单。以下是我为使其工作而采取的步骤:

1) 将data目录 (/var/lib/postgres/8.4/data) 归档到 tar.gz 文件中。

2) 将文件移动到工作工作站(我的桌面,运行基于 Debian 的 Linux 发行版)

3) 安装 PostgreSQL APT 存储库并使用PostgreSQL Linux downloads for Ubuntupostgresql-8.4中的说明安装(或损坏的服务器上的版本)。

4) 将 tar.gz 文件的内容解压缩到“新”PostgreSQL 8.4 安装的主目录 (/var/lib/postgresql/8.4/main/)。

5) 修改 以postgresql.conf将 更改port = 5432port = 5433。这允许我们使用端口号控制我们连接到哪个版本的 PostgreSQL(假设我们的工作站上有最新的稳定版本,例如 9.1)。所以 9.1 将保留在默认的 5432 上,而 8.4 将在 5433 上。

6)修改提取数据目录的所有权,使postgres为所有者:chown -R postgres:postgres /var/lib/postgresql/8.4/main/*

7)启动postgres服务:(service postgresql start你会看到两个版本都启动了)

8)su作为 postgres 并使用端口 5433 和旧服务器上的数据库名称进行连接:psql -p 5433 DatabaseName

于 2013-06-19T13:00:07.627 回答