zoukankan      html  css  js  c++  java
  • 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天

    [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脚本的执行计划

  • 相关阅读:
    25. Spring Boot与缓存 JSR-107、Spring缓存抽象
    24. Spring Boot 自定义Starter (未整理,待续)
    UGUI 锚点
    UGUI Button控件
    UGUI Image控件
    UGUI Text控件
    Unity 角色复活和重新开始游戏
    Unity 读取Excel
    IOS使用C#预处理命令,多种SDK共存
    Unity扩展 四种Menu的区别
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/9149548.html
Copyright © 2011-2022 走看看