pgAgent设定定时备份

Posted 01coding.com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pgAgent设定定时备份相关的知识,希望对你有一定的参考价值。

PostgreSQL定时自动备份

简介

PostgreSQL数据库中未提供数据库的定时备份功能,所以需要结合备份和定时job功能来共同实现。

这里我选取了2种定时job方式,crontab是Linux中的定时job功能,故只能支持Linux系列操作系统;其中pgAgent是基于数据库的定时备份,可适用于各种操作系统。

实验环境

  • PostgreSQL:
操作系统:CentOS Linux release 7.3.1611 (Core)

数据库系统: PostgreSQL 9.5.9

IP: 192.168.230.134

port: 5432

 

冷备份脚本

业务需求:
每日按日期执行自动备份,生产dmp的压缩文件。备份文件保存7天

[[email protected] ~]$vim backup.sh 

#!/bin/bash
cur_time=$(date ‘+%Y-%m-%d‘)
sevendays_time=$(date -d -7days ‘+%Y-%m-%d‘)
export PGPASSWORD=oracle
echo "Starting Backup PostgreSQL ..."
rm -rf pgsql-backup.$sevendays_time.tar.gz
pg_dumpall -U postgres -p 5432>"pgsql-backup.$cur_time.dmp"
tar zcvf "/var/lib/pgsql/pgsql-backup.$cur_time.tar.gz" *.dmp
echo "Remove temp file ..."
rm -rf pgsql-backup.*.dmp
echo "Finish Backup ..."


[[email protected] ~]$chmod 755 ./backup.sh

 

此脚本备份并压缩整个数据库,删除7天前的备份

[[email protected] ~]$ls
9.5  backup.sh  pgsql-backup.2017-09-04.tar.gz
[[email protected] ~]$./backup.sh 
Starting Backup PostgreSQL ...
./backup.sh: line 7: 5432: Bad file descriptor
pgsql-backup.2017-09-11.dmp
Remove temp file ...
Finish Backup ...
[[email protected] ~]$ls
9.5  backup.sh  pgsql-backup.2017-09-11.tar.gz

 

热备份脚本

业务需求:每天对整个数据库数据进行热备份,不能影响实际业务

#!/bin/bash  
DATE=$(date ‘+%Y%m%d‘);
PG_ARCHIVE=/var/lib/pgsql/9.5/data/pg_arch
PG_DATA=/var/lib/pgsql/9.5/data
PG_HOME=/var/lib/pgsql

#START BACKUP
echo "START BACKUP..............." 
psql postgres -c "select pg_start_backup(‘hot_back‘)"
cd $PG_HOME
tar zcvf ${PG_HOME}/pg_hotbackup_$DATE.tar.gz $PG_DATA
psql postgres -c "select pg_stop_backup()"
psql postgres -c "select pg_switch_xlog()"
psql postgres -c "select pg_current_xlog_location()"
echo "BACKUP  END"

 

crontab设定定时备份

创建执行计划

业务需求为每天临晨2点自动执行备份脚本

[root@localhost ~]# crontab -e

0 2 * * * /var/lib/pgsql/backup.sh

no crontab for root - using an empty one
crontab: installing new crontab

 

详情可参见

http://blog.csdn.net/sunbocong/article/details/77883797

pgAgent设定定时备份

使用pgadmin III 工具连接目标库
新建作业daily_backup

技术分享图片

创建计划daily_backup,设定开始时间

技术分享图片

选定时间为每天凌晨2点00分

技术分享图片

新建步骤daily_backup,选择批处理

技术分享图片

设定其执行之前我们编写的backup.sh脚本

技术分享图片

这样我们就设定好了每天凌晨2点00分执行backup.sh脚本的执行计划

以上是关于pgAgent设定定时备份的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server 2008 R2 定时备份任务设定

关于工作,学习中定时备份的几个方法(cron,git,mail)

shell脚本 每天定时进行自动备份实战脚本~~~

centos 64位上的pgagent

mysql 数据库定时备份 增量/全备份

linux定时备份mysql数据库文件