最終更新:2011-04-01 (金) 20:12:24 (4771d)
pg_upgrade
Top / pg_upgrade
http://lets.postgresql.jp/documents/technical/contrib/pg_upgrade
はじめに
- PostgreSQLでは、定期的なバージョンアップが行われます。バージョンアップには2種類あり、バージョン名 (x.y.z) の x または y が変化するメジャーリリース (8.3 → 8.4) と、z が変化するマイナーリリース (8.3.6 → 8.3.7) です。メジャーバージョンがアップするとDBクラスタの互換性がなくなるため、pg_dump?等によるダンプを行い、新版のDBクラスタにデータをリストアする処理が必要です。
- このダンプの取得とリストアは、非常に大きなデータを持つシステムでは長時間かかるため厄介でした。この作業が面倒で、古いバージョンを使い続けている方も多いのではないでしょうか?このようなダンプやリストア処理を不要にし、使用中のDBクラスタをそのまま新しいバージョンのPostgreSQLでも使い続けられるようにしてくれるのが、pg_upgrade という contrib モジュールです。
- なお、pg_upgrade は PostgreSQL のバージョン 8.3 以上のDBクラスタから、PostgreSQL 9.0以上へアップグレードするケースに対応しています。8.2 から 8.3 や 9.0 へ、また 8.3 から 8.4 へ、といった移行には使用できませんので注意して下さい。
移行モード
移行可否の確認モード
- 実際に移行はせず、pg_upgradeによる移行が可能かをチェックするだけのモード。-c (or --check) オプションを付与して実施
リンクによる移行モード
- 旧版のデータベースクラスタと新版のデータベースクラスタでユーザデータをハードリンクにより共有するモード。-k (--link)オプションを付与して実施
コピーによる移行モード
- 旧版のデータベースクラスタから新版のデータベースクラスタへユーザデータをコピーするモード。明示的なオプションを付与しないとこのモードで実施