$ pg_dumpall | split --bytes=1024m - db.dump
作成 2010.01.08
更新 2012.04.06
更新 2012.04.06
PostgreSQL バージョンアップ作業のメモ
Fedora 11 から 12 へアップグレードした際に、PostgreSQL を 8.3.8 から 8.4.1 へアップグレードしたメモ
アップグレード前の作業
データベースのバックアップ
ユーザー postgres で実行する。1GiBに分割されたテキストデータで保存される。
サービス停止
アップグレード後、自動起動しないように変更する。
# 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 オプションに指定可能なロケールは以下のコマンドで取得する。
$ 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 (円 小文字エル)でデータベースの一覧とエンコード、ロケールが確認できる
\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