ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-07-26 15:37:00  阅读:217  来源: 互联网

标签:-% bin shell postgres 备份 db Cron sh backup


思路:先创建一个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

#!/bin/bash

#备份路径
path=/home/postgres/db_back;

#创建备份路径文件
if [ ! -d "$path" ];then
   mkdir -p $path;
fi

#获取备份日期时间
cur_time=$(date '+%Y-%m-%d-%H-%M-%S')

#db数据库名称
dbname=oyzData_CivilAirDefence_NeiMengGu_Xilinguolemeng_postgresql

#执行备份命令
/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的环境变量,可以在脚本的开头添加一行:

#!/bin/bash
source /etc/profile




标签:-%,bin,shell,postgres,备份,db,Cron,sh,backup
来源: https://www.cnblogs.com/haolb123/p/16521187.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有