Postgresql 备份脚本
2016-12-19 by dongnan
功能
使用 pg_dumpall
命令,对 postgresql
进行逻辑备份,数据压缩,检查备份天数等功能。
使用
赋予执行权限
chmod 700 pgBackup.sh
创建.pgpass文件
创建此文件后,无需再输入密码,格式:如下,可以使用* 匹配任意字符:
#hostname:port:database:username:password
创建crontab任务
例如每天的 23:55 执行备份脚本程序。
# 打开编辑器
crontab -e
# 添加计划
55 23 * * * /path/pgBackup.sh >> /tmp/cron.log 2>&1
shell脚本
cat pgBackup.sh
#!/bin/bash
#destination:backup postgresql
#script name:pgBackup.sh
#20150831 by http://ywwd.net
#create /root/.pgpass, format:hostname:port:database:username:password
#chmod 600 .pgpass
#variables
pg_host="pg-db.ywwd.net"
pg_user="postgres"
dump=/usr/bin/pg_dumpall
psql=/usr/bin/psql
gzip=/usr/bin/gzip
log=/root/sh/backup.log
bak_dir=/backup/
date_dir=$(date +'%Y%m%d')
expires_date=`date +"%Y%m%d" --date='7 days ago'`
#test command
for command in $dump $psql $gzip ;do
if [[ ! -e $command ]];then
echo "$command Not Found"
exit 1
fi
done
#delete old file (7days)
find "$bak_dir" -name "${expires_date}" -type d | xargs rm -rf
#date dir
test -e ${bak_dir}${date_dir} || mkdir -p ${bak_dir}${date_dir}
#backup and gzip database.sql
#postgres user
#/bin/su - postgres -c "$dump -c | $gzip > ${bak_dir}${date_dir}/dmp.gz"
#root user
test -e ${bak_dir}${date_dir}/dmp.gz || $dump -h "$pg_host" -U "$pg_user" -c -w | $gzip > ${bak_dir}${date_dir}/dmp.gz