备份pg数据库脚本,并压缩成tar包存储以节省空间,使用crontab定时执行。
crontab计划为(以postgres用户每天晚上11点执行):
0 23 * * * /var/lib/pgsql/backup.sh >> /data0/backup/pgdata_export.log 2>&1
备份脚本为
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache2/bin:/root/bin
export LANG=zh_CN.UTF-8
dest_folder=/data0/backup/
dest_file=pgdata_$(date +%Y%m%d).dmp
tar_file=pg_$(date +%Y%m%d).tar.gz
echo [$(date +'%F %H:%M:%S')] 准备导出postgresql数据库
echo [$(date +'%F %H:%M:%S')] 导出文件地址为$dest_folder$dest_file
echo [$(date +'%F %H:%M:%S')] 正在导出……
pg_dump ucenter > $dest_folder$dest_file
echo [$(date +'%F %H:%M:%S')] 导出成功,准备压缩已导出文件
echo [$(date +'%F %H:%M:%S')] 压缩文件地址为$dest_folder$tar_file
echo [$(date +'%F %H:%M:%S')] 正在压缩……
cd $dest_folder
tar -czf $tar_file $dest_file
echo [$(date +'%F %H:%M:%S')] 压缩完毕,准备删除数据库导出文件
rm -f $dest_folder$dest_file
echo [$(date +'%F %H:%M:%S')] 数据库导出文件已删除
恢复
psql -f pgdata_20180320.dmp -d database1;