![如何将我的 postgres 数据从 8.4 迁移到 9.1?](https://linux22.com/image/811632/%E5%A6%82%E4%BD%95%E5%B0%86%E6%88%91%E7%9A%84%20postgres%20%E6%95%B0%E6%8D%AE%E4%BB%8E%208.4%20%E8%BF%81%E7%A7%BB%E5%88%B0%209.1%EF%BC%9F.png)
我已经将我的 ubuntu 开发机器从 11.04 升级到 11.10。在此过程中,我的 postgres 也从 8.4 升级到了 9.1。
但我似乎丢失了所有数据。如果我查看,我可以看到 8.4 的数据在文件夹中/var/lib/postgres/8.4/main
,而我的新数据库在 中/var/lib/postgres/9.1/main
。
将我的数据迁移到新版本的最佳方法是什么?我可以只复制文件吗?
答案1
su postgres
pg_dropcluster --stop 9.1 main
pg_upgradecluster 8.4 main
起初,这对我来说不起作用,原因有二。首先,postgresql-8.4 曾经被卸载过,所以我必须重新安装它:
sudo apt-get install postgresql-8.4
然后我必须进入 8.4postgresql.conf
并更改max_connections
为 10。然后它就成功了。您应该能够在以下位置找到 conf 文件/etc/postgresql/8.4/main/postgresql.conf
答案2
升级到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。
答案3
当没有足够的时间进行转储和恢复时,使用 pg_upgrade: http://www.postgresql.org/docs/devel/static/pgupgrade.html