PostgreSQL のバージョンアップと旧バージョンからのデータ引き継ぎ

インストール法の詳細については google で検索すると良質な資料が多数出てくるので、ここでは扱いません。弱腰。

バックアップ

現在動いてるDBのバックアップを取ります。 十分な空きのあるファイルシステム上でバックアップを取りましょう。

$ pg_dumpall -o > backup.data

バックアップが終わったら postgres を停止します。

$ kill -TERM `head -1 /usr/local/pgsql/data/postmaster.pid`

というのが一番良いらしいんですがヒジョーに時間がかかります。 もしかしてすごい時間がかかるというのはワタシの実験してる環境が変なのかもしれません。
待てないセッカチさんは

$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`

で止めます(いいのかな?)。 ps で postmaster が居なくなってることを確認しましょう。

DBは念のため別名で保存しておきます。

$ mv /usr/local/pgsql/data /usr/local/pgsql/data_old

新バージョン インストール & 起動

インストールはフィーリングで。

$ ./configure 〜〜
$ make all
$ make install
$ initdb -D /usr/local/pgsql/data
$ /usr/local/pgsql/bin/pg_ctl -o "-i" -D /usr/local/pgsql/data start

以前のデータをリストア

動き始めたスッカラカンの新バージョンに、さっき取ったバックアップを戻します。

$ /usr/local/pgsql/bin/psql -d template1 -f backup.data

ひととおりデータを見て、きちんと戻っているようなら別名で保存しておいたDBを削除します(ディスクの無駄なので)。 これでおしまいです。結構簡単。

Moriya / moriya@s1.xrea.com