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,设定开始时间

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

新建步骤daily_backup,选择批处理

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

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

pgAgent设定定时备份的更多相关文章

  1. Windows下为MySQL做定时备份

    第一种:新建批处理文件 backup.dat,里面输入以下代码:  代码如下 复制代码 net stop mysqlxcopy "C:/Program Files/MySQL/MySQL S ...

  2. windows 下mysql每日定时备份的几种方法

    第一种:新建批处理文件 backup.dat,里面输入以下代码:  代码如下 复制代码 net stop mysql xcopy "C:/Program Files/MySQL/MySQL ...

  3. 使用教程 - BestSync同步软件 - SQL2008R2 数据库定时备份解决方案

    需求: 1.      某公司的管理软件,数据库为SQL2008R2.2.      将整个数据库作为一个文件,定时同步到FTP 服务器3.      需要有多个备份,每同步一次,都备份上次的文件到备 ...

  4. linux_rsync定时备份

    在linux系统中,需要注意空格使用,有着整体性原则,并且注意大小写问题 Rsync数据同步工具 开源.快速.多功能.可实现全量和增量的本地或远程 具有本地和远程两台主机之间数据快速同步镜像.远程备份 ...

  5. mysqldump+系统计划任务定时备份MySql数据

    MYSQL 数据库备份有很多种(cp.tar.lvm2.mysqldump.xtarbackup)等等,具体使用哪一个还要看你的数据规模.下面给出一个表 #摘自<学会用各种姿态备份Mysql数据 ...

  6. MySQL数据库的定时备份

    1. 创建shell脚本 vim backupdb.sh 创建脚本内容如下: #!/bin/sh db_user="root" db_passwd=" db_name=& ...

  7. linux mysql 定时备份

    1.查看磁盘空间情况: 既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果! 存储到当前磁盘这是最简单,却是最不推荐的:服务器有多块硬盘,最好是把备份存放到 ...

  8. 定时备份windows机器上的文件到linux服务器上的操作梳理(rsync)

    由于需要对网络设备做备份,备份文件是放到windows机器上的.现在需要将备份数据同步到linux备份机器上,想到的方案有三种: 1)将windows的备份目录共享出来,然后在linux服务器上进行挂 ...

  9. linux 定时备份

    每部主机的任务都不相同,重要的数据也不相同,重要性也不一样,因此,每个人癿备份思考角度都不一样! 有些备份策略是非常有趣的: (1)挂载储存设备进行备份: 挂载设备: 备份的 script #!/bi ...

随机推荐

  1. php对象序列化总出错false

    php unserialize 返回false的解决方法 php 提供serialize(序列化) 与unserialize(反序列化)方法. 使用serialize序列化后,再使用unseriali ...

  2. Atitit. atiOrder   Order 订单管理框架的设计

    Atitit. atiOrder   Order 订单管理框架的设计 1. Order 订单处理流程1 2. code2 3. Ref7 1. Order 订单处理流程 if(userSvr.isNo ...

  3. Ionic学习笔记3_ionic指令简单布局

    1)   添加引用类库(ionic样式和ionic js文件) 2)   标题栏,页脚栏,内容区 3)   Js引入ionic类库,添加页面操作方法和对象 4)   数据初始化 5)   Html页面 ...

  4. Any、AnyObject、as

    Swift中添加了两种类型别名 Any:可表示随意类型,(Int.Double等值类型). AnyObject:可表示随意class类型实例, 一个不论什么对象类型的数组 Any类型: class C ...

  5. class文件简介及加载

    Java编译器编译好Java文件之后,产生.class 文件在磁盘中.这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码.JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中, ...

  6. MAJOR-MINOR-MKDEV

    标记一下,容易忘,以免每次查代码. ./include/linux/types.h:21:typedef __u32 __kernel_dev_t; ./include/linux/types.h:2 ...

  7. Springboot集成权限管理框架apache shiro

    一.名词解释 网上一大堆 二.pom依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifact ...

  8. 深度解析丨秒懂nova3手机上超酷炫的AR应用及开发

    此前在HUAWEI nova3发布会中,相信大家都已经感受到了AR能力带来的惊喜: 现实场景召唤圣斗士,随时随地交流合影: 点击观看视频:https://v.qq.com/x/page/m1344f6 ...

  9. Oracle 数据库排错之 ORA-00600

    [错误代码] ORA-00600 [问题描述] ORA-00600: [kcratr1_lastbwr]错误的处理办法 [问题分析] 出现该错误是因为系统强制关机造成的!症状为数据库无法打开! [问题 ...

  10. 【转】Monkey测试5-运行中停止monkey

    停止monkey自动测试步骤: 1.ps命令  查找uiautomator的进程 打开cmd命令行窗口 输入: adb shell ; ps | grep monkey; 返回来的第一个数字,即是mo ...