我有一个损坏的虚拟机,它无法使用旧的 postgresql 数据库启动(用于运行 PostgreSQL 8.4)。我可以访问文件系统(和 pg_data 目录)。
如何从此数据目录中提取数据(或恢复数据库)?
是否像将这个目录的内容复制到一个工作的 8.4 pg_data 目录一样简单?
我有一个损坏的虚拟机,它无法使用旧的 postgresql 数据库启动(用于运行 PostgreSQL 8.4)。我可以访问文件系统(和 pg_data 目录)。
如何从此数据目录中提取数据(或恢复数据库)?
是否像将这个目录的内容复制到一个工作的 8.4 pg_data 目录一样简单?
其实基本上就是这么简单。以下是我为使其工作而采取的步骤:
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 = 5432
为port = 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