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.2 の 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.2をインストールしたら、 新しいデータベースディレクトリを作成し新しいサーバを起動させます。 これらのコマンドは特別のデータベースユーザアカウント(もし更新している 場合はすでに作られています)でログイン している間に実行されなければいけないことを覚えておいて下さい。

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