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
做到這一點的最佳時間是前ugrading一個版本的Ubuntu在所述版本你正在運行的Postgresql已經被刪除,即在這個例子中,而在一個可以安裝Postgres 8.3和Postgres 8.4的Ubuntu版本上。就我而言,我從輕率走向業力,將8.3升級到8.4,然後從業力轉向清醒。
上述升級過程非常流暢。 * pg_upgradecluster *命令將停止舊版本,遷移數據,然後在與舊版本相同的端口上啓動新版本,最後在新端口上啓動舊版本。
如果您在遷移到缺少postgres 8.3的Ubuntu版本之前沒有遷移8.3 postgres數據,遷移仍然很簡單。通過增加業報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目錄總是一個好主意。
這工作就像一個魅力!我從源代碼編譯它,使用--enable-integer-datetimes和--without-readline。 只有當我能夠pg_dumpall。 謝謝! – SCO 2010-09-02 11:44:57