2014年2月28日金曜日

(FreeBSD 上での)PostgreSQL のメジャーアップデートの仕方のメモ

FreeBSD 上で PostgreSQL を使ったデータベースを運用してるが, 今回,PostgreSQL のメジャーアップデートを行ったので,そのメモを残しておこうと思った。

 そもそも PostgreSQL のメジャーアップデートとは何か? PostgreSQL のバージョンは,PostgreSQL 9.3.3 のように3つの数字で表される。 ここで,9.3 がメジャーバージョンを表し,最後の 3 がマイナーバージョンを表してる。 PostgreSQL のドキュメントにも書いてあるが,マイナーバージョンレベルでのアップデートは, 単に,運用されている PostgreSQL を止め,アプリケーションのコードを更新してから PostgreSQL を起動しなおせばいい。 データの構造が変わることはまずないので,単にアプリケーションソフト自体のみを更新すればいいらしい。

 しかし,メジャーバージョンが変わるアップデートの場合には,データ構造に変更がある場合もあるので,工夫が必要らしい。 備忘録として,以下にまとめてみた。

1. database のデータの dump を作っておく(dump を経由してデータを移行する)(PostgreSQL は動かしたままで行う)
 # /usr/local/bin/pg_dump -U pgsql -E UNICODE testdb > testdb.dump.2014xxxx

2. 古いデータベースを念の為に削除(postgresql はまだ動かしたまま)
 # dropdb -U pgsql testdb

3. postgreSQL を停止する(以下は FreeBSD の場合)
 # /usr/local/etc/rc.d/postgresql stop

4. 念の為に /usr/local/pgsql/ をバックアップしておく。
 # mv -r /usr/local/pgsql /usr/local/pgsql.data.2014xxxx

5. 古い postgresql の deinstall
 # pkg_delete postgresqlXX-server-X.X.X
 # pkg_delete postgresqlXX-client-X.X.X

6. 新しいバージョンの postgresql の install
 # cd /usr/ports/databases/postgresqlYY-server
 # make install clean

7. 新しいバージョン用のディレクトリの作成(user 名 pgsql で行う)
 # su -m pgsql
 # mkdir /usr/local/pgsql
 # mkdir /usr/local/pgsql/data
 # exit (rootに戻る)

8. postgreSQL の初期化
 # /usr/local/etc/rc.d/postgresql initdb

9. postgresql の起動
 # /usr/local/etc/rc.d/postgresql start

10. testdb で新しいユーザーの作成
 # psql -U pgsql testdb
 # create user www;

11. database データの resume と確認
(# dropdb -U pgsql testdb)
 # createdb -U pgsql --encoding=UNICODE -T template0 testdb
 # cat testdb.dump.2014xxxx | psql -U pgsql testdb

0 件のコメント: