[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
# hostname:port:database:username:password(# でコメントアウト)
*:*:*:postgres:パスワード
localhost:5432:データベース名:ユーザー名:パスワード
localhost:5432:データベース名:ユーザー名:パスワード
[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