当前位置: 首页 > article >正文

docker里面pgadmin4自动备份pg数据库操作

一、需求

上线之后要求数据库数据每天备份,但是之前一直是人用pgadmin4 的界面手动点击备份,偶尔会忘记点击,就忘记备份了。每次下班前备份,除了会影响下班,还会忘记,就想都是脚本,手写一个自动备份的

二、实现

pg数据库是docker 安装的,pgadmin4也是docker安装的。 因为国产Linux服务器,没有网,直接安装各种依赖问题,烦烦烦....

实现逻辑:在pgadmin4 的容器里面使用命令备份数据库,在Linux服务器上开启crontab定时任务

三、具体步骤

1、pgadmin4安装

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/dpage/pgadmin4:8.9

docker run  -d --name pgadmin4 --restart always -p 5080:80 \
-e 'PGADMIN_DEFAULT_EMAIL=21At@123.com' \
-e 'PGADMIN_DEFAULT_PASSWORD=123456' \
-e 'PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True' \
-e 'PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"' \
-e 'PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10' \
-v /root/data/pgadmin4:/var/lib/pgadmin \
 pgadmin:8.9

2、备份脚本

第一步:在容器里面创建备份脚本/var/lib/pgadmin/back.sh

#!/bin/sh
d=$(date "+%Y-%m-%d_%H-%M")
echo "${d}"

# 免输入密码
export PGPASSWORD="postgres"

# 备份命令
/usr/local/pgsql-16/pg_dump --file "/var/lib/pgadmin/storage/pga_user_21At_123.com/backup/database_${d}.backup" --host "127.0.0.1" --port "5432" --username "postgres" --role "postgres" --format=c --large-objects --encoding "UTF8" --verbose "postgres"

第二步:在Linux服务器上创建脚本 /usr/local/bin/pg_back.sh

#!/bin/bash
echo "$(date) -- 开始备份数据库" >> /usr/local/logs/pg_back.log
docker exec pgadmin4 /bin/sh -c "/var/lib/pgadmin/back.sh >  /var/lib/pgadmin/logs/pg_back.log 2>&1"
echo "$(date) -- 备份完成! " >> /usr/local/logs/pg_back.log

3、开启定时任务

# 编辑定时任务脚本
crontab -e
# 添加下面两行
------------------------------------------------------
# 每天凌晨2点备份数据库
0 2 * * * /usr/local/bin/pg_back.sh
------------------------------------------------------
# 查看是否编辑成功
crontab -l

四、测试验证

备份的文件目录:/var/lib/pgadmin/storage/pga_user_21At_123.com/backup/database_${d}.backup

文件权限问题授权

chown 999:999 file


http://www.kler.cn/a/566703.html

相关文章:

  • NIM平台开发基于提示工程的大语言模型(LLM)应用
  • 笔记20250225
  • IP-----双重发布
  • 使用PDFMiner.six解析PDF数据
  • 【Rust中级教程】题外话:Rust + Python联合编程(基于Maturin)
  • 城电科技|会追日的智能花,光伏太阳花开启绿色能源新篇章
  • 一个便捷的web截图库~
  • 回溯算法(C/C++)
  • mysql中事务的基本概念
  • 开源PDF解析工具olmOCR
  • next.js-学习3
  • USRP4120-通用软件无线电平台
  • C语言一维数组的全面解析
  • CAN总线通信协议学习1——物理层
  • HarmonyOS 5.0应用开发——多线程Worker和@Sendable的使用方法
  • 版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点
  • I2S音频开发(使用USB音频进行验证)
  • ESP32 S3开发笔记(环境搭建,成功烧录)
  • Windows逆向工程入门之MASM整数存储机制
  • Grok3使用体验与模型版本对比分析