如何将postgres数据从8.4迁移到9.1?

我已经将我的ubuntu开发机器从11.04升级到11.10。 在这个过程中,我的postgres也从8.4升级到9.1。

但我似乎丢失了所有数据。 如果我看,我可以看到8.4的数据位于文件夹/var/lib/postgres/8.4/main而我的新数据库位于/var/lib/postgres/9.1/main

将数据迁移到新版本的最佳方法是什么? 我可以复制文件吗?

 su postgres pg_dropcluster --stop 9.1 main pg_upgradecluster 8.4 main 

起初,这对我来说不起作用有两个原因。 首先,postgresql-8.4在某些时候没有被取消,所以我不得不重新安装它:

 sudo apt-get install postgresql-8.4 

然后我不得不进入8.4 postgresql.conf并将max_connections更改为10.然后它工作了。 您应该能够在/etc/postgresql/8.4/main/postgresql.conf找到conf文件。

升级到11.10后,安装了PostgreSQL 9.1,但运行版本为8.4。

我试过了:

 su postgres pg_dropcluster --stop 9.1 main pg_upgradecluster 8.4 main 

它报告了错误:

 Stopping old cluster... pg_ctl: servidor não desligou Error: Could not stop old cluster 

所以,在另一个窗口中:

 $ sudo service postgresql-8.4 stop * Stopping PostgreSQL 8.4 database server [ OK ] jgr@cagliari:~$ sudo service postgresql-8.4 start * Starting PostgreSQL 8.4 database server [ OK ] 

然后再说:

 pg_upgradecluster 8.4 main 

报告了与pgRouting相关的错误。 花了一段时间(整夜!),但之后数据库升级到9.1。 PostGIS也升级到1.5.3。

当没有足够的时间进行转储和恢复时,请使用pg_upgrade: http : //www.postgresql.org/docs/devel/static/pgupgrade.html