PostgreSQL定期备份的解决方法

前言

之前已经用pgagent实现了旧数据定期删除的方法

PostgreSQL需要定时清理旧数据的解决方法 - 掘金 (juejin.cn)

现在研究下如果实现定期备份

环境说明

我们需要第一在主机上创建一个文件夹用来存放保存好的文件(容器和本机都需要) 且本机的文件需要赋予权限

bash 复制代码
chmod o+W /你的文件地址

需要在容器中安装openssh-client、和sshpass

arduino 复制代码
apt install openssh-client
apt-get install sshpass

1、创建脚本

先查询下pg_dumpall工具位置:

arduino 复制代码
find / -name pg_dumpall

在容器的一个文件中创建sh脚本

bash 复制代码
cd /home
mkdir script
touch save.sh

脚本内容为(根据实际情况修改):

bash 复制代码
#!/bin/bash

# Description:备份 PostgreSQL 数据库并压缩成 gz 文件,最后删除 3 天前的备份文件。

echo "开始执行 PostgreSQL 数据库的备份..."
echo "backup ing..."
today=$(date +%Y-%m-%d)                       # 今天的日期
nowtime=$(date +%F+%T)                        # 当前时间点
yestoday=$(date -d '-3 day' +%Y-%m-%d)        # 3天前的日期
host_ip=127.0.0.1                             # 本机 IP 地址
backup_ip=你的远端地址                           # 远端备份服务器 IP
port_id=5432                                  # 端口号,PostgreSQL默认的端口号是5432    
username=postgres                             # 数据库用户             
export PGPASSWORD='你的密码'               # 数据库密码
dmpDir='你的目录'                          # 本地备份目录
destination='你的目录'                 # 远端备份目录

echo "时间:" $nowtime
set timeout 600

# /usr/bin/ 为 pg_dump 备份工具安装路径,根据实际情况更新此路径。

/usr/bin/pg_dumpall --file "$dmpDir/pg_backup_$today.sql" --host "$host_ip" --port "$port_id" --username "$username"
#--verbose --role "postgres" --format=c --blobs --encoding "UTF8" 备份转换扩展配置

echo "PostgreSQL 数据库备份完成!"

echo "当天备份文件压缩中..."
gzip "$dmpDir/pg_backup_$today.sql"
echo "3 天前的 PostgreSQL 数据库备份文件已删除!"

echo "开始远端备份..."
export SSHPASS=your_password
sshpass -e scp -r "$dmpDir/pg_backup_$today.sql.gz" (你的登录名)@$backup_ip:$destination

echo "远端备份完毕,感谢您使用此脚本!"
exit;

给脚本增加可执行权限

bash 复制代码
chmod +x save.sh

2、用pgAgent设置定时任务

点击创建 输入名称 点击步骤创建 点击编辑------添加运行代码

创建计划任务: 最后在重复中:添加每日执行时间 最后记得保存!

结语

我们借用pgAgent完成了数据库的日常2个定时任务,清理数据、保存数据库。

本次参考文章为:

太强了!MySQL、Oracle、PostgreSQL 数据库备份拿来就用的 Shell 脚本! - 掘金 (juejin.cn)

相关推荐
吴声子夜歌几秒前
Docker入门与实战——常见问题总结
运维·docker·容器
小林ixn24 分钟前
别再 MySQL + Milvus 双写了:PostgreSQL + pgvector 一张表搞定 AI 长期记忆
数据库·postgresql·agent
云贝贝贝34 分钟前
白天稳如狗半夜就抖:OceanBase 合并转储把读写延迟顶了上去
数据库·sql·oceanbase
ss27337 分钟前
AI时代首先数据库-PostgreSQL实战笔记 | 24 PostgreSQL WAL日志与崩溃恢复原理
数据库·笔记·postgresql
冰暮流星1 小时前
sql之日期函数
数据库·sql
忡黑梨1 小时前
PostgreSQL 14 源码编译安装实战:RHEL 8 离线环境从零到可用
数据库·postgresql
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 23 PostgreSQL数据库文件系统与数据页结构
数据库·笔记·postgresql
凤凰院凶涛QAQ2 小时前
《MySQL内核拆解:从SQL到InnoDB》(一) : 数据库基础&库操作&数据类型
数据库·sql·mysql
马立杰2 小时前
Docker Build 编译补丁版 PHP7.4 FPM 容器镜像教程(CVE-2026-109618 CVE-2026-109619)
运维·docker·容器·php
tedcloud1232 小时前
Docker Compose 部署 Memos:从安装到备份恢复
linux·开发语言·jvm·后端·docker·容器·rust