8.3. リリース間の移行

一般的に、Postgresのリリース間では、 内部のデータ保管形式は変更することが仮定されています。 これは、異ったパッチレベルには該当せず、これらは必ず 互換性のある保管形式となっています。例えば、6.5.3、7.0.1、7.1は 互換性がありませんが、7.0.2と 7.0.1は互換性があります。 互換性があるバージョンでの移行を行う場合は、ただ単にディスク上の データ領域を新しい実行プログラムで使用するだけで結構です。 その他の場合は、pg_dumpを使って、データを "バックアップ"し、新しいサーバに"リストア"する 必要があります。(間違ったことを行わないように、随時確認があります) この章では、正確なインストール手順については触れませんので、詳細は インストール手順をご覧下さい。

サーバを停止させる時間を最も短時間にするには、新しいサーバを 違ったディレクトリにインストールし、古いサーバと新しいサーバを 異ったポートで並行に稼働させる方法があります。そして、データを 転送させるために下記のようなコマンドを実行するか、中間ファイルを 使用して下さい。

pg_dumpall -p 5432 | psql -d template1 -p 6543

その後、古いサーバを停止させ、新しいサーバを古いサーバが稼働していた ポートで立ち上げて下さい。この時、pg_dumpallを 行った後にデータベースが更新されていないことにご注意下さい。 さもないとそれらのデータは消えてしまいます。接続を拒否する方法は Chapter 4をご覧下さい。実際には、 サーバを入れ換える前に、クライアントアプリケーションのテストを 行うことをお勧めします。

2つのサーバを並行に稼働できない、または稼働したくない場合は、 新しいバージョンのインストールを行う前に、下記のコマンドのように まずバックアップを行い、古いバージョンを削除してから、 新しいバージョンをインストールし、新しいサーバを立ち上げて、 データをリストアして下さい。

pg_dumpall > backup
kill -INT `cat /usr/local/pgsql/postmaster.pid`
mv /usr/local/pgsql /usr/local/pgsql.old
cd /usr/src/postgresql-7.1
gmake install
initdb -D /usr/local/pgsql/data
postmaster -D /usr/local/pgsql/data
psql < backup

サーバを開始/停止させる方法や、その他の詳細は Chapter 3をご覧下さい。 インストール手順では、これらのステップを実行する場所についての 助言が記載されています。

Note: "古いバージョンを削除"した場合、それらは正常に 使用できなくなってしまいます。インストールのある部分には、 その他のものがどこにインストールされたかの情報が含まれています。 これは多くの場合、たいした問題ではありませんが、2つの インストールを暫く並行に使用する場合、ビルドの際に異った インストールディレクトリを指定することをお勧めします。