PostgreSQLが新しくリリースされると、内部データ格納 のフォーマットが変わります。したがって、もし既にインストールされていて バージョンナンバーが "7.1.x"ではないものを更新 する場合、ここで記述しているようにバックアップを取り、データを復旧しなければ なりません。この説明では、既にインストールされたものが /usr/local/pgsqlディレクトリにあり、データエリアは /usr/local/pgsql/dataであると仮定していますので、 必要に応じてパスを設定して下さい。
バックアップ中、またはバックアップ後にデータベースを更新しないようにして下さい。 これはバックアップの状態には影響しませんが、更新されたデータは 新しいデータベースにはもちろん反映されません。必要であれば、 /usr/local/pgsql/data/pg_hba.confファイル(もしくは同等のもの)で、 自分以外の人がデータベースにアクセスできないように接続権限を編集して下さい。
データベースインストールのダンプは以下のように入力します。
pg_dumpall > outputfileもし OID を保存する必要がある場合は(外部キーとして使う場合など)、 pg_dumpallを実行する時に -o オプション をつけます。pg_dumpallはラージオブジェクトの保存は しません。それが必要な場合は Section 8.1.4 を見て下さい。
現在作動しているバージョンのpg_dumpallコマンド を使うように確認して下さい。7.1.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が動作するかもしれません。
もし古いバージョンと同じ場所でインストールする場合、その古いものが後に必要に なるかもしれないので古い方を移動させておくのもよい考えです。そのためには 下記のようなコマンドを使います。
mv /usr/local/pgsql /usr/local/pgsql.old
PostgreSQL 7.1.3をインストールしたら、 新しいデータベースディレクトリを作成し、新しいサーバを起動させます。 これらのコマンドは特別のデータベースユーザアカウント(更新している 場合はすでに作られています)でログインしている間に実行することにご注意下さい。
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data最後に、データを
/usr/local/pgsql/bin/psql -d template1 -f outputfileで、新しい psqlを使って復旧します。
運転休止時間を減らすために、新しいバージョンを古いバージョンと 同時にインストールすることも可能です。これらのトピックは Section 8.3, で詳しく説明されており、どのような場合でも読んでおくことを お勧めします。