postgreSql定时备份数据脚本

  1. 创建.pgpass文件
  2. 创建备份执行shell脚本
  3. 创建定时任务

创建.pgpass文件

ps: 必须创建在 ~/目录下否则无法读取

# 每个参数需要使用`:`进行分割
# hostname:port:database:username:passowrd
*:5432:*:postgres:Hnzm&soft@123@$#`

创建定时shell脚本

#!/bin/sh
# pgsql备份使用的shell脚本
#includ <studio.h>
#includ <time.h>
#includ <stdlib.h>
#includ <sys/time.h>
dir="/opt/database/pgsql_backup"
log="${dir}/pgsql-echo.log"
# 定义备份目录路径
echo $(date +"%Y-%m-%d %H:%M:%S")"脚本执行开始">> $log;

# 创建的目录名
path="${dir}/$(date '+%Y%m%d')"

if [ ! -d $path ]; then
echo "文件不存在! 创建文件夹" >> $log
sudo mkdir $path
fi

pg_dump -h 127.0.0.1  -p 5432 -U postgres -w  dbname=dbname > ${path}/dbname.bak
echo "执行结束" >> $log

echo "开始移除7天之前的备份数据" >> $log
# 移除几天前就将 7 改为几天
clearDate=$(date -d "7 day ago "$date '+%Y%m%d');

for dir in "$backup_dir"/*/;
do
    clearDir=$(basename $dir)
    if [ $clearDir -lt $clearDate ]; then
        echo "移除 ${clearDir} 目录">> $log;
        rm -rf "$dir"
    fi

done
echo "结束删除之前备份数据" >> $log
echo $(date +"%Y-%m-%d %H:%M:%S")"脚本执行结束">> $log;

创建定时任务

# 输入下面命令可以进到编辑页面
crontab -e
# 将下面这个定时任务写进去
00 1 * * * '要执行的shell全路径' > /usr/local/mysql-back/back-err.log  &
# 下面命令可以查看当前有的定时任务
crontab -l
posted @ 2025-01-23 11:25  wds09  阅读(105)  评论(0)    收藏  举报