作成 2010.01.08
更新 2012.04.06
PostgreSQL バージョンアップ作業のメモ
Fedora 11 から 12 へアップグレードした際に、PostgreSQL を 8.3.8 から 8.4.1 へアップグレードしたメモ
アップグレード前の作業
データベースのバックアップ
ユーザー postgres で実行する。1GiBに分割されたテキストデータで保存される。
$ pg_dumpall | split --bytes=1024m - db.dump
サービス停止
アップグレード後、自動起動しないように変更する。
# service postgresql stop
# chkconfig postgresql off
データベース再構築用の準備
既存DBのディレクトリを移動する。
# mv /var/lib/postgresql/data /var/lib/postgresql/data.back
# mkdir /var/lib/postgresql/data
# chmod 700 /var/lib/postgresql/data
# chown postgres:postgres /var/lib/postgresql/data
アップグレード後の作業
データベースのイニシャライズ
initdb の際に --locale オプションを追加する。
--locale オプションに指定可能なロケールは以下のコマンドで取得する。
$ locale -a
/etc/rc.d/init.d/postgresql 257行目
$SU -l postgres -c "$PGENGINE/initdb --encoding='UTF8' --locale='ja_JP.utf8' --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
イニシャライズ
# service postgresql initdb
サービス起動
# service postgresql restart
エンコードが正しいか確認する
ユーザー postgres で実行する
\l (円 小文字エル)でデータベースの一覧とエンコード、ロケールが確認できる
$ psql template1
\l
/var/lib/postgresql/data/pg_hba.conf
ローカルユーザーは認証なし
host    template1   all         192.168.93.0/24       ident
/var/lib/postgresql/data/postgresql.conf
listen_addresses = '*'
shared_buffers = 256MB
temp_buffers = 64MB
/etc/sysctl.conf
shared_buffers はデフォルト32MB なので変更しないと起動しない
kernel.shmmax = 536870912
サービス再起動
# service postgresql restart
# chkconfig postgresql on
データベースのリストア
postgres ユーザーで実行
$ cat db.dump* | psql template1

©2004-2017 UPKEN IPv4