PostgreSQL の新しいリリースでは、内部的なデータ格納形式が変更されています。そのため、メジャー番号が "7.2.x" とは異なるインストレーションからアップグレードする場合、ここで説明する通りにデータをバックアップし、リストアする必要があります。ここでは、これまでのインストレーションが /usr/local/pgsql 以下にあり、データ領域が /usr/local/pgsql/data であることを前提とします。パスを適切に置き換えて下さい。
バックアップの前後でデータベースが更新されないことを確実にして下さい。これはバックアップの一貫性には影響ありませんが、当然ながら、更新されたデータがバックアップには含まれません。必要ならば、 /usr/local/pgsql/data/pg_hba.conf (または同等ファイル) 内の権限を変更して、他のユーザからのアクセスを禁止して下さい。
データベースインストレーションをダンプするには、以下を行って下さい。
pg_dumpall > outputfile
(OID を外部キーとして使用している場合など) OID を保持する必要がある場合は、pg_dumpall を実行する時に -o オプションを使用して下さい。
pg_dumpall はラージオブジェクトを保存しません。保存が必要であれば、 Section 9.1.4 をチェックして下さい。
現在稼働中のバージョンの pg_dumpall コマンドを確実に使用して下さい。7.2.3 の pg_dumpall は古いデータベースに対しては使用できないはずです。
古いものと同じ場所に新しいバージョンをインストールする場合は、少なくても新しいファイルをインストールする前に古いサーバを停止してください。
kill -INT `cat /usr/local/pgsql/data/postmaster.pid`
7.0 より前のバージョンでは、postmaster.pid ファイルはありません。こういったバージョンを使用している場合は、サーバのプロセス ID を見つけなければなりません。例えば、 ps ax | grep postmaster と入力し、その結果を使用して kill を実行してください。
ブート時に PostgreSQL が起動するシステムでは、おそらく上と同じことを行うことができる起動用ファイルが存在します。例えば、 Red Hat Linux では、以下のようにすることで実現できます。
/etc/rc.d/init.d/postgresql stop
この他にも、pg_ctl stop を使用することができます。
古いバージョンと同じ場所にインストールする場合、もし問題があった場合に元に戻さなければなりませんので、古いインストレーションを他の場所に移動することもお勧めします。以下のようなコマンドを使用して下さい。
mv /usr/local/pgsql /usr/local/pgsql.old
PostgreSQL 7.2.3 のインストールの後、新しいデータベースディレクトリを作成し、新しいサーバを起動して下さい。これらのコマンドを実行する時に、特殊なデータベースユーザアカウントでログインしなければならないことは忘れないで下さい(アップグレードしている場合は既にこのアカウントは存在します)。
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
最後に、新しい psql を使用して、データをリストアして下さい。
/usr/local/pgsql/bin/psql -d template1 -f outputfile
古いものと一緒に新しいバージョンをインストールして、停止時間を減らすこともできます。いずれにしても読むことになるでしょうが、これらの話題は、 Section 9.3, で詳細に説明されています。