• 使用shell脚本+Cron任务自动执行postgres数据库备份


    思路:先创建一个shell脚本,用于备份pgsql数据库,再使用Cron任务,根据自己需求设置定时任务。

    环境:centos7+postgres12.0

    一、创建一个根据日期来定义备份文件名的脚本

    1. 创建db_backup.sh文件

    touch db_backup.sh

    2. 赋予777权限

    chmod -R 777 db_backup.sh

    二、对db_backup.sh文件进行编写脚本

    编辑db_backup.sh

    1. #!/bin/bash
    2. #备份路径
    3. path=/home/postgres/db_back;
    4. #创建备份路径文件
    5. if [ ! -d "$path" ];then
    6. mkdir -p $path;
    7. fi
    8. #获取备份日期时间
    9. cur_time=$(date '+%Y-%m-%d-%H-%M-%S')
    10. #db数据库名称
    11. dbname=oyzData_CivilAirDefence_NeiMengGu_Xilinguolemeng_postgresql
    12. #执行备份命令
    13. /usr/local/pgsql/bin/pg_dump -h 127.0.0.1 -U postgres -p 5432 -E UTF8 -f ${path}/backup_$cur_time.sql ${dbname} --inserts

    三、编辑crontab以创建新的cron任务

    1、编辑cron定时任务

    crontab -e

    2、每周六凌晨五点备份(具体备份时间以自己公司要求为准)

    00  5  *  *  6 /usr/local/sbin/db_backup.sh

    四、重启cron定时任务

    systemctl restart crond

    五、备份的数据就保存在/home/postgres/db_back目录下。

    六、使用定时任务执行db_backup.sh备份脚本备份结果为空

    1、用crontab自动备份postgresql的时候导出总是为空,原因是corn的环境变量中没有pg_dump,所以用crontab执行pg_dump的时候要加上绝对路径,如:/usr/local/pgsql/bin/pg_dump xxxxxxx这样就可以了。

    2、如果系统中配置了mysql的环境变量,可以在脚本的开头添加一行:

    1. #!/bin/bash
    2. source /etc/profile
  • 相关阅读:
    元素绑定
    让我踩坑的超链接href属性
    MySQL总结练习题
    Java爬虫——正则表达式应用
    毕业设计-基于机器视觉的火灾烟雾检测识别系统-yolo
    springboot + activiti实现activiti微服务化
    基于web的招标投标系统的设计与实现-计算机毕业设计源码+LW文档
    GameStop NFT 市场分析
    IPV6地址详解
    不会看器件手册的工程师不是个好厨子
  • 原文地址:https://blog.csdn.net/qq_30665009/article/details/125998939