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 件のコメント:
コメントを投稿