PostgreSQL定时自动备份

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天

[postgres@localhost ~]$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 ..."


[postgres@localhost ~]$chmod 755 ./backup.sh

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

[postgres@localhost ~]$ls
9.5  backup.sh  pgsql-backup.2017-09-04.tar.gz
[postgres@localhost ~]$./backup.sh 
Starting Backup PostgreSQL ...
./backup.sh: line 7: 5432: Bad file descriptor
pgsql-backup.2017-09-11.dmp
Remove temp file ...
Finish Backup ...
[postgres@localhost ~]$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,设定开始时间

计划1

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

计划2

新建步骤daily_backup,选择批处理

步骤1

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

步骤2

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

详情可参见
http://blog.csdn.net/sunbocong/article/details/77870205

已标记关键词 清除标记
<p> PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 </p> <p>   </p> <p> <a href="https://baike.baidu.com/item/PostgreSQL/530240">PostgreSQL</a> 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 </p> <p>   </p> <p> 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持<a href="https://baike.baidu.com/item/%E4%BA%8B%E5%8A%A1">事务</a>、<a href="https://baike.baidu.com/item/%E5%AD%90%E6%9F%A5%E8%AF%A2">子查询</a>、多版本并行控制系统(<a href="https://baike.baidu.com/item/MVCC">MVCC</a>)、<a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%AE%8C%E6%95%B4%E6%80%A7">数据完整性</a>检查等特性的唯一的一种自由软件的<a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F">数据库管理系统</a>。 Inprise 的 InterBase 以及<a href="https://baike.baidu.com/item/SAP">SAP</a>等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。 </p> <p> 从技术角度来讲,PostgreSQL 采用的是比较经典的<a href="https://baike.baidu.com/item/C%2FS">C/S</a>(client/server)结构,也就是一个客户端对应一个服务器端<a href="https://baike.baidu.com/item/%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B">守护进程</a>的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由<a href="https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9C%8D%E5%8A%A1%E5%99%A8">数据库服务器</a>提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如<a href="https://baike.baidu.com/item/ODBC">ODBC</a>,<a href="https://baike.baidu.com/item/JDBC">JDBC</a>,<a href="https://baike.baidu.com/item/Python">Python</a>,<a href="https://baike.baidu.com/item/Perl">Perl</a>,<a href="https://baike.baidu.com/item/Tcl">Tcl</a>,<a href="https://baike.baidu.com/item/C%2FC%2B%2B">C/C++</a>,<a href="https://baike.baidu.com/item/ESQL">ESQL</a>等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 </p> <p>   </p> <p> <strong>本课程作为PostgreSQL数据库管理一,主要讲解以下内容:</strong> </p> <p> <strong><br /></strong> </p> <p> 1.<span style="font-size:9px;">     </span>PostgreSQL安装和环境准备 </p> <p> 2.<span style="font-size:9px;">     </span>PostgreSQL数据查询 </p> <p> 3.<span style="font-size:9px;">     </span>PostgreSQL 数据过滤 </p> <p> 4.<span style="font-size:9px;">     </span>PostgreSQL 多表的联接 </p> <p> 5.<span style="font-size:9px;">     </span>PostgreSQL数据的分组 </p> <p> 6.<span style="font-size:9px;">     </span>PostgreSQL合集的操作 </p> <p> 7.   PostgreSQL 合集的分组 </p> <p> <br /></p> <p> <img src="https://img-bss.csdn.net/201906140515361517.png" alt="" /></p> <p> <img src="https://img-bss.csdn.net/201906140514591642.png" alt="" /></p>
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页