将Postgresql 8.3数据库文件升级到8.4

SCO*_*SCO 1 postgresql ubuntu upgrade

我将Ubuntu 8.04升级到Ubuntu 10.04.不幸的是,升级过程还将Postgres 8.3安装更新为Postgres 8.4安装.我的感觉是虽然数据库引擎二进制文件已经更新,但数据库本身并没有迁移,因此8.4无法加载它.由于8.3数据格式与8.4格式不兼容,因此更改postgresql.conf是不够的,我也无法使用pg_dump8.4安装.

我需要一种方法将我以前的基础从8.3升级到8.4,无法访问8.3引擎,只有8.4.

任何线索?

Eri*_*erg 7

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
Run Code Online (Sandbox Code Playgroud)

执行此操作的最佳时间是升级到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
Run Code Online (Sandbox Code Playgroud)

安装postgresql-8.3:

apt-get update && apt-get install postgresql-8.3
Run Code Online (Sandbox Code Playgroud)

删除8.4群集.警告:如果您有任何数据,这将删除postgresql 8.4安装中的数据.但是如果你只是因为你需要将8.3升级到8.4,那么你的8.4群集中就没有数据了.

pg_dropcluster 8.4 main --stop
Run Code Online (Sandbox Code Playgroud)

然后将8.3群集升级到8.4:

  pg_upgradecluster 8.3 main
Run Code Online (Sandbox Code Playgroud)

最后,删除postgresql-8.3软件包,从/etc/apt/sources.list中删除jaunty-line ,然后再次运行apt-get update.

像往常一样,在执行上述任何操作之前备份你的postgres目录总是一个好主意.