跳转至

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






回到页面顶部