移植前準備†
旧バージョン postgres が立ち上がっている状態で
pg_dump 【dbname】 > dbname.dump
install†
yum install postgresql postgresql-server postgresql-devel
自動起動設定†
chkconfig --level 345 postgresql on
初期設定†
いったんデータベースの初期化のために起動してすぐとめる
/etc/rc.d/init.d/postgres start
/etc/rc.d/init.d/postgres stop
8では
/etc/rc.d/init.d/postgresql initdb
ver7用 TCPアクセス用コンフィグ†
emacs /var/lib/pgsql/data/pg_hba.conf
host all 127.0.0.1 255.255.255.255 trust
ver8用 TCPアクセス用コンフィグ†
emacs /var/lib/pgsql/data/pg_hba.conf
host all 127.0.0.1/32 trust
/var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'
port = 5432
再起動
/etc/rc.d/init.d/postgresql start
su postgres
ユーザ作成(不要の場合あり)
createdb postgres
psql コマンドを使いたいユーザ分の回数実行
$ psql
postgres=# create user 【username】 createdb;
自分ユーザ†
createdb -E EUC-JP【dbname】
psql -d 【dbname】-f dbname.dump
新旧両方を別サーバや別ポートで立ち上げてパイプで繋ぐのもアリらしい
php モジュール†
# apt-get install php-pgsql
perl モジュール†
yum install perl-DBI-Pg
pgcommand†
pg_dump -Fc -b データベース名 > db_archive.dump
これで、db_archive.dump にデータが出力されます。このファイルはバイナリですが、圧縮されているので、大きなデータベースをバックアップするときには効率的です。また、このデータから復元させるには、次のように行います。
createdb -T template0 データベース名
pg_restore -d データベース名 db_archive.dump
これで、データベースが復元されます。-T template0 は必ず指定してください(理由を知りたい場合は、マニュアルを参照してください)。また pg_dumpall は、全てのデータベースのバックアップを行います。したがって、データベース名を指定する必要はありません。これらのコマンドは、データベースのバージョンアップを行うときにも使用できます。PostgreSQL の場合、バージョンアップを行うと、データベースファイルの互換性がなくなる場合があります。その場合は、これらのコマンドを使ってデータを移行する必要があります。
場合によっては、テーブル単位でバックアップとを取り、テーブル単位でデータを復元したい場合もあるかと思います。テストしてるときとかは、重宝します。それには次のようにします。
バックアップ
pg_dump -t テーブル データベース名 > dump.out
復元
psql データベース名 < dump.out
windows 版†
export PGHOST=localhost
pg_hba†
windows
/cygdrive/c/Program Files/PostgreSQL/9.4/data