【JPUG主催】PostgreSQLカンファレンス2020【11月13日開催】
他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.3. リリース間の移行

一般的な取り決めで PostgreSQL のリリース間における内部データ保存形式は変更の対象となっています。"パッチレベル" の相違は対象外で、パッチレベル間では必ず互換性のとれる保存形式になっています。たとえばリリース 7.1.1 と 7.1.2 とでは互換正がありますが、7.0.1、7.1.2 と 7.2 には互換性がありません。互換性のあるバージョン間での更新を行う場合、ただ単にディスク上のデータ領域を新しい実行プログラムで使用するだけで問題ありません。互換性がない場合は pg_dump によりデータを「バックアップ」してから新しいサーバに「リストア」する必要があります。(間違ったことを行わないよう所どころで確認を求められますので互換性について勘違いをしていても大丈夫です。)正確なインストール手順はこの節の範疇ではありません。 詳細は Chapter 1 にあります。

サーバ停止の時間を最短とするには、新しいサーバを違ったディレクトリにインストールし、古いサーバと新しいサーバを異なったポートで並行に稼働させる方法があります。そのようにしたら、

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

このようなコマンドでデータを転送するか、必要に応じて中間ファイルを使用することができます。その後古い方のサーバを停止し、新しいサーバを古いサーバが稼働していたポートで立ち上げます。このとき pg_dumpallを行った後にデータベースが更新されていないことを確認してください。 さもないとそれらのデータは明らかに消えてしまいます。接続を拒否する方法は Chapter 6 を参照してください。実際にはサーバを交換する前に、クライアントアプリケーションのテストを行うことをお勧めします。

2 つのサーバを並行に稼働できなかったり稼働させたくない場合は、新しいバージョンのインストールを行う前にまずバックアップを行い、サーバを停止してから古いバージョンをどこかに移動し、新しいバージョンをインストールしたのち、新しいサーバを立ち上げてデータをリストアしてください。以下に例を示します。

pg_dumpall > backup
pg_ctl stop
mv /usr/local/pgsql /usr/local/pgsql.old
cd /usr/src/postgresql-7.3.4
gmake install
initdb -D /usr/local/pgsql/data
postmaster -D /usr/local/pgsql/data
psql template1 < backup

サーバを稼働/停止させる方法や、その他の詳細は Chapter 3 を参照してください。インストール手順ではこれらの手順を実行する戦略場所についてのお勧め事項が記載されています。

Note: 「古いインストレーションをどこかに移動」した場合、もはや完全には使用できません。インストレーションのある部分には、その他の部分がどこにあるのかの情報を持っています。これは多くの場合たいした問題ではありませんが、2 つのインストレーションをしばらく並行して使用する場合ビルドの際に異なったインストレーションディレクトリを割り当てなければなりません。