1.4. アップグレード

PostgreSQLが新しくリリースされると、内部データ格納 のフォーマットが変わります。したがって、もし既にインストールされていて バージョンナンバーが "7.1.x"ではないものを更新 する場合、ここで記述しているようにバックアップを取り、データを復旧しなければ なりません。この説明では、既にインストールされたものが /usr/local/pgsqlディレクトリにあり、データエリアは /usr/local/pgsql/dataであると仮定していますので、 必要に応じてパスを設定して下さい。

  1. バックアップ中、またはバックアップ後にデータベースを更新しないようにして下さい。 これはバックアップの状態には影響しませんが、更新されたデータは 新しいデータベースにはもちろん反映されません。必要であれば、 /usr/local/pgsql/data/pg_hba.confファイル(もしくは同等のもの)で、 自分以外の人がデータベースにアクセスできないように接続権限を編集して下さい。

  2. データベースインストールのダンプは以下のように入力します。

    pg_dumpall > outputfile
    もし OID を保存する必要がある場合は(外部キーとして使う場合など)、 pg_dumpallを実行する時に -o オプション をつけます。pg_dumpallはラージオブジェクトの保存は しません。それが必要な場合は Section 8.1.4 を見て下さい。

    現在作動しているバージョンのpg_dumpallコマンド を使うように確認して下さい。7.1.3 の pg_dumpall は古いデータベースには使うべきではありません。

  3. もし古いバージョンと同じ場所で新しいものをインストールしている場合、 遅くても新しいファイルをインストールする前に、古いサーバは シャットダウンして下さい。

    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
    が動作するかもしれません。

  4. もし古いバージョンと同じ場所でインストールする場合、その古いものが後に必要に なるかもしれないので古い方を移動させておくのもよい考えです。そのためには 下記のようなコマンドを使います。

    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, で詳しく説明されており、どのような場合でも読んでおくことを お勧めします。