[user]$ pg_dumpall -U postgres > ファイル名 [user]$ psql -U postgres template1 < ファイル名・データベース
[user]$ pg_dump -U ユーザー名 データベース名 > ファイル名 [user]$ psql -U ユーザー名 データベース名 < ファイル名・テーブル
[user]$ pg_dump -U ユーザー名 データベース名 -t テーブル名 > ファイル名 [user]$ psql -U ユーザー名 データベース名 < ファイル名・定期的なバックアップ実行
実行ユーザーのホームディレクトリに、パスワードを記述したファイル(.pgpass)を用意
[user]$ vim ~/.pgpass ホスト名:ポート番号:データベース名:ユーザー名:パスワード(* で省略可能) *:*:*:username:password [user]$ chmod 600 .pgpass
バックアップを実行するシェルスクリプトを作成
[user]$ vim ~/backup/pg_dump.sh #!/bin/sh # データベース名 DB=dbname # ユーザー名 USER=username # 保存ディレクトリ DIR=${HOME}/backup # ファイル名 FILE="${DB}-`date --date today '+%y%m%d'`" # バックアップ /usr/local/pgsql/bin/pg_dump -U ${USER} ${DB} | gzip > ${DIR}/${FILE}.gz # ファイルのパーミッション変更 chmod 600 ${DIR}/${FILE}.gz [user]$ chmod 700 pg_dump.sh
定期的にバックアップを実行
[user]$ crontab -e 0 0 * * * ${HOME}/backup/pg_dump.sh
確認
[user]$ ls -lh ~/backup -rw------- 1 user user 617K 3月 20 00:00 dbname-150319.gz
復元
[user]$ cd ~/backup [user]$ gzip -d dbname-150319.gz [user]$ ls -lh -rw------- 1 user user 5.0M 3月 20 00:00 dbname-150319 [user]$ psql -U username dbname < dbname-150319