pg_upgrade

Name

pg_upgrade  --  データの再読み込みを行なわずに、以前のリリースからのアップグレード を可能にする。

Synopsis

pg_upgrade [ -f filename ] old_data_dir
  

説明

pg_upgrade は、全データの再読み込みを行な わずに以前のリリースの PostgreSQL からのアップグレードを行なうユー ティリティです。 全ての Postgres リリースにおいて、この方法に よる移行ができるわけではありません。 詳細はインストールに使用した配布物にあるリリースノートを参照して下さい。

pg_upgrade による Postgres のアップグレード

  1. できるならば、pg_dumpall を使用した完全なダンプの作成とい う方法で、既存のデータディレクトリをバックアップして下さい。

  2. 次に、

    % pg_dumpall -s >db.out
         
    を行ない、データ自体を除いた古いバージョンのデータベース定義 部分をダンプして下さい。

  3. 古いバージョンの postmaster とバックエンド全てを停止して 下さい。

  4. (mv を使って)pgsql 以下の古い data/ ディレ クトリを data.old/ という名前に変更して下さ い。

  5. % make install
         
    を行ない、新しいバイナリをインストールして下さい。

  6. initdb を実行して、新しいリリース用の システムテーブルを含む template1 データベースを作成して下さい。

  7. 新しい postmaster を起動して下さい。 (注意: アップグレードが完了する前に、このデータベースにユーザが接続する ことにすることは致命的です。 -i オプションを付けずに起動する、別の pg_hba.conf を一時的に使用する、もしくは、両方を 行なうなどして、postmaster を起動する方が良いでしょう。)

  8. 作業ディレクトリを pgsql メインディレクトリに変更し、

    % pg_upgrade -f db.out data.old
         
    と入力して下さい。このプログラムは全てが適切に設定されているかどうか についての点検を何かしら行ない、そして、db.out スクリプトを実行して古 いリリースで作成していたデータベースとテーブルを作成します。デー タ自体はまだありません。その後、このプログラムは、 data.old/ から適切な data/ サブディレクトリへ、システムテーブル以外とインデックスを持つ データファイルを物理的に移動し、db.out スクリプトによって生成された 空のデータファイルを置き換えます。

  9. 必要ならば、ユーザがログインできるように、古い pg_hba.conf に戻します。

  10. postmaster を停止し、再起動します。

  11. アップグレードされたデータベースの内容を 注意深く 確認して下さい。 問題を発見した場合、pg_dump による完全なバックアップから戻す という方法で復旧する必要があります。 問題がなければ、data.old/ ディレクトリを 削除することができます。

  12. アップグレードされたデータベースはゴミ掃除されていない状態になっ ています。 実運用状態として実行する前に、VACUUM ANALYZE を実行した方が良いでしょう。