我的虚拟机无法使用旧的postgresql数据库启动(用于运行PostgreSQL 8.4)。我可以访问文件系统(和pg_data目录)。
如何从此数据目录中提取数据(或恢复数据库)?
是否像将此目录的内容复制到工作的8.4 pg_data目录一样简单?
答案 0 :(得分:4)
实际上它基本上就是这么简单。以下是我采取的步骤:
1)将data
目录(/var/lib/postgres/8.4/data)存档到tar.gz文件中。
2)将文件移动到工作工作站(我的桌面,运行基于Debian的Linux发行版)
3)安装PostgreSQL APT存储库并使用the PostgreSQL Linux downloads for Ubuntu中的说明安装postgresql-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