使用shell脚本+Cron任务自动执行postgres数据库备份
思路:先创建一个shell脚本,用于备份pgsql数据库,再使用Cron任务,根据自己需求设置定时任务。
环境:centos7+postgres12.2
1.创建一个根据日期来定义备份文件名的脚本:
1. 创建db_backup.sh文件
touch db_backup.sh
2. 赋予777权限
chmod -R 777 db_backup.sh
2.对db_backup.sh文件进行编写脚本:
1.编辑db_backup.sh
vim db_backup.sh
2.db_backup.sh编辑内容
#! /bin/bash
path=/home/postgres/db_back; //备份路径
if [ ! -d "$path" ];then //创建备份路径文件
mkdir $path;
fi
date=`date +%Y%m%d:%H`; //获取备份日期时间
//'/usr/local/pgsql/bin/pg_dump postgres' pg_dump路径和要备份的数据库名
ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"| awk 'NR==1{print}');
/usr/local/pgsql/bin/pg_dump postgres -f ${path}backup_$ip-$date.backup -h 127.0.0.1 -U postgres
3.编辑crontab以创建新的cron任务:
1.crontab -e //编辑cron定时任务
2. 每周六凌晨五点备份(具体备份时间以自己公司要求为准)
00 5 * * 6 root /usr/local/sbin/db_backup.sh //db_backup.sh文件路径
4 .重启cron定时任务:
systemctl restart crond
5.备份的数据就保存在/home/postgres/db_back目录下。