PostgreSQL

【postgress】pg_dumpでバックアップを定期的に保存

More than 1 year has passed since last update.

条件
データーベースごとのバックアップ
シェルスクリプトを記述してcronで定期的にバックアップ
バックアップしたものは圧縮して保存
バックアップで一週間過ぎたものは削除される

シェルスクリプト

シェルスクリプトの処理
pg_dumpでダンプファイルの取得
tarコマンドで圧縮
保存期間のすぎたファイルの削除

バックアップ場所の作成(/var/backup/へ作成します)

#mkdir -p /var/backup/
#chmod 777 /var/backup/

シェルスクリプトの作成

#mkdir -p /var/backup_sh/
#vi /var/backup_sh/pg_backup.sh
pg_backup.sh
#!/bin/bash

# バックアップファイルを残しておく日数
PERIOD='+7'

# 日付
DATE=`date '+%Y%m%d'`

# バックアップ先ディレクトリ
SAVEPATH='/var/backup/'

# 先頭文字
PREFIX='project-'

# 拡張子
EXT='.sql'

# データーベース名
USER='user'
DBNAME='sampledb'


# バックアップ実行
pg_dump -U $USER $DBNAME > $SAVEPATH$PREFIX$DATE$EXT

# tar圧縮
tar --remove-files -P -zcvf $SAVEPATH$PREFIX$DATE$EXT.tar.gz $SAVEPATH$PREFIX$DATE$EXT

# 保存期間が過ぎたファイルの削除
find $SAVEPATH -type f -daystart -mtime $PERIOD -exec rm {} \;

シェルスクリプトが実行できるように実行権限付与

#chmod u+x /var/backup_sh/pg_backup.sh

cronで定期的に実行

毎日深夜2時に実行する例。

#crontab -e

crontab
00  2  *  *  * /var/backup_sh/pg_backup.sh

参考サイト

PostgreSQLのバックアップをcronで定期的におこなう方法