我将Ubuntu 8.04升级到Ubuntu 10.04.不幸的是,升级过程还将Postgres 8.3安装更新为Postgres 8.4安装.我的感觉是虽然数据库引擎二进制文件已经更新,但数据库本身并没有迁移,因此8.4无法加载它.由于8.3数据格式与8.4格式不兼容,因此更改postgresql.conf
是不够的,我也无法使用pg_dump
8.4安装.
我需要一种方法将我以前的基础从8.3升级到8.4,无法访问8.3引擎,只有8.4.
任何线索?
Debian中的postgres包,以及Ubuntu,有一个非常明确的从Postgres版本升级到另一个版本的方式.该过程记录在/usr/share/doc/postgresql-common/README.Debian中,如下所示:
Default clusters and upgrading ------------------------------ When installing a postgresql-X.Y package from scratch, a default cluster 'main' will automatically be created. This operation is equivalent to doing 'pg_createcluster X.Y main --start'. Due to this default cluster, an immediate attempt to upgrade an earlier 'main' cluster to a new version will fail and you need to remove the newer default cluster first. E. g., if you have postgresql-8.2 installed and want to upgrade to 8.3, you first install postgresql-8.3: apt-get install postgresql-8.3 Then drop the default 8.3 cluster: pg_dropcluster 8.3 main --stop And then upgrade the 8.2 cluster to 8.3: pg_upgradecluster 8.2 main
执行此操作的最佳时间是在升级到Ubuntu的版本之前,其中当前正在运行的Postgresql版本已被删除,即在此示例中,在Ubuntu版本上可以同时安装Postgres 8.3和Postgres 8.4.在我的情况下,我从jaunty变为karmic,升级到8.3到8.4,然后从karmic变为lucid.
如上所述的升级过程非常顺利.*pg_upgradecluster*命令将停止旧版本,迁移数据,然后在与旧版本相同的端口上启动新版本,最后在新端口上启动旧版本.
如果您在迁移到缺少postgres 8.3的Ubuntu版本之前没有迁移8.3 postgres数据,那么迁移仍然很简单.首先将karmic ubuntu存储库添加到/etc/apt/sources.list:
deb http://archive.ubuntu.com/ubuntu/ karmic main restricted universe
安装postgresql-8.3:
apt-get update && apt-get install postgresql-8.3
删除8.4群集.警告:如果您有任何数据,这将删除postgresql 8.4安装中的数据.但是如果你只是因为你需要将8.3升级到8.4,那么你的8.4群集中就没有数据了.
pg_dropcluster 8.4 main --stop
然后将8.3群集升级到8.4:
pg_upgradecluster 8.3 main
最后,删除postgresql-8.3软件包,从/etc/apt/sources.list中删除jaunty-line ,然后再次运行apt-get update.
像往常一样,在执行上述任何操作之前备份你的postgres目录总是一个好主意.