用PG Back Web轻松进行PostgreSQL备份

news/2024/10/11 19:08:56/文章来源:https://blog.csdn.net/wbsu2004/article/details/141966009

在这里插入图片描述

什么是 PG Back Web ?

PG Back Web 🐘 使用用户友好的 Web 界面轻松进行 PostgreSQL 备份!🌐💾。PG Back Web 不仅仅是另一个备份工具。借助 PG Back Web,用户可以通过受 PGP 加密保护的直观 Web 界面轻松安排和创建备份。功能包括计划备份、状态监控、从 Web 即时下载、S3 存储、加密和暗模式。根据该项目的 repo,一键恢复和 API 等功能即将推出。

软件特征

  • 📦直观的网络界面:轻松管理您的备份,无需数据库专业知识。
  • 📅计划备份:设置后即可忘记。PG Back Web 会处理其余的事情。
  • 📈备份监控:通过执行日志可视化备份状态。
  • 📤即时下载:在需要时,直接从 Web 界面访问您的备份。
  • 🖥多版本支持:兼容 PostgreSQL 13141516
  • 📁 S3 存储:根据需要添加任意数量的 S3 存储桶,以获得更大的灵活性。
  • 🔒安全第一PGP 加密保护您的敏感信息。
  • 🛡️开源信任MIT 许可下的开源代码,由强大的 pg_dump 工具支持。
  • 🌚暗黑模式:因为我们都喜欢暗黑模式。
  • 🎯为每个人设计:从个人开发者到团队。
  • ⏱️节省时间:自动备份,不再需要手动任务。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 pgbackweb ,选择第一个 eduardolat/pgbackweb,版本选择 latest

最近不知道是调整了算法还是什么原因,总之搜出来都是乱七八糟的

本文写作时, latest 版本对应为 0.1.2

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

步骤1

启动一个 PostgreSQL 容器,这个容器是给 PG Back Web 使用的,用于记录用户信息、数据库连接信息、存储信息、备份计划等

# 新建文件夹 pgbackweb 和 子目录
mkdir -p /volume1/docker/pgbackweb/{data,minio}# 进入 pgbackweb 目录
cd /volume1/docker/pgbackweb# 运行容器 PostgreSQL
docker run -d \--restart unless-stopped \--name pbw-postgres \-p 5433:5432 \-v $(pwd)/data:/var/lib/postgresql/data \-e POSTGRES_DB=pgbackweb \-e POSTGRES_USER=postgres \-e POSTGRES_PASSWORD=password \postgres:15

环境变量:

  • POSTGRES_DB:数据库库名;
  • POSTGRES_USER:数据库用户;
  • POSTGRES_PASSWORD:数据库用户对应的密码;

步骤2

启动一个 MinIO 容器,并创建一个存储桶,用于存储数据库的备份

文章传送门:拥有自己的MinIO对象存储服务器

# 运行容器 MinIO
docker run -d \--restart unless-stopped \--name pbw-minio \--entrypoint sh \-p 9900:9000 \-p 9901:9090 \-v $(pwd)/minio:/data \-e MINIO_ROOT_USER=root \-e MINIO_ROOT_PASSWORD=password \minio/minio \-c 'minio server /data --console-address ":9090"'

下面👇的命令将在 pbw-minio 容器内部执行 mc 命令,其中:

  • /usr/bin/mc alias set myminio http://localhost:9000 root password 用于设置 MinIO 的别名和凭据。
  • /usr/bin/mc mb myminio/db-backup 用于创建名为 db-backup 的存储桶。
# 创建名为 db-backup 的存储桶
docker exec -it pbw-minio sh -c "/usr/bin/mc alias set myminio http://localhost:9000 root password && /usr/bin/mc mb myminio/db-backup"

步骤3

启动 pgbackweb 容器

# 运行容器
docker run -d \--restart unless-stopped \--name pbw-pgbackweb \-p 8085:8085 \-e PBW_ENCRYPTION_KEY=my_secret_key \-e PBW_POSTGRES_CONN_STRING="postgresql://postgres:password@192.168.0.197:5433/pgbackweb?sslmode=disable" \eduardolat/pgbackweb:latest

环境变量:

  • PBW_ENCRYPTION_KEY:您的加密密钥。生成一个强密钥并将其存储在安全的地方,因为 PG Back Web 会使用它来加密敏感数据,例如:数据库凭证、秘钥等。
  • PBW_POSTGRES_CONN_STRING:将存储 PG Back Web 数据的 PostgreSQL 数据库的连接字符串。

docker-compose 安装

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:pgbackweb:image: eduardolat/pgbackweb:latestcontainer_name: pbw-pgbackwebports:- "8085:8085" # Access the web interface at http://localhost:8085environment:PBW_ENCRYPTION_KEY: "my_secret_key"PBW_POSTGRES_CONN_STRING: "postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable"depends_on:postgres:condition: service_healthypostgres:image: postgres:15container_name: pbw-postgres # ports:#   - "5433:5432"environment:POSTGRES_DB: pgbackwebPOSTGRES_USER: postgresPOSTGRES_PASSWORD: passwordvolumes:- ./data:/var/lib/postgresql/datahealthcheck:test: ["CMD-SHELL", "pg_isready -U postgres"]interval: 5stimeout: 5sretries: 5minio:image: minio/miniocontainer_name: pbw-minioports:- "9900:9000"- "9901:9090"environment:MINIO_ROOT_USER: "root"MINIO_ROOT_PASSWORD: "password"volumes:- ./minio:/datacommand: minio server /data --console-address ":9090"

然后执行下面的命令

# 新建文件夹 pgbackweb 和 子目录
mkdir -p /volume1/docker/pgbackweb/{data,minio}# 进入 pgbackweb 目录
cd /volume1/docker/pgbackweb# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d# 创建名为 db-backup 的存储桶
docker exec -it pbw-minio sh -c "/usr/bin/mc alias set myminio http://localhost:9000 root password && /usr/bin/mc mb myminio/db-backup"

如果你细心的话,会发现 PBW_POSTGRES_CONN_STRING 的值在 docker clidocker-compose 安装时,存在差异,这是

  • docker cli 采用了独立安装的容器,各容器并不在一个网络中,所以 PostgreSQL 的地址用了主机 IP + 本机端口的方式

  • docker-compose 各容器默认在同一个 pgbackweb_default 网络中,所以可以用 service name + 容器端口的方式

运行

在浏览器中输入 http://群晖IP:8085 ,第一次会看到注册界面

创建成功后,还需要登录

主界面

创建一个数据库

Comentario 的数据库为例

  • Name:根据需要填写,主要用于区分不同的数据库;
  • Version:是指要连接的数据库的版本,Comentario 用的是 postgres:16-alpine;
  • Connection string:根据 Comentario 的设置,连接字符串是 postgresql://postgres:postgres@192.168.0.197:5434/comentario

设置完成后点 Test connection 进行测试,如果看到连接成功,就可以点 Save 保存了

接下来需要设置 Destinations

  • Name:易于识别就行;
  • Bucket name:要写入我们前面创建的存储桶的名字;
  • EndpointMinio 的服务器地址;
  • Region:因为不能为空,可以填 us-east-1
  • Access key:如果没有单独创建的话,就用 MINIO_ROOT_USER 的值也行;
  • Secret key:如果没有单独创建的话,就用 MINIO_ROOT_PASSWORD 的值也行;

如果测试没问题,点 Save 保存

接下来就可以备份了

  • Name:易于识别即可;
  • Database:从下拉框中选取;
  • Destination:从下拉框中选取;
  • Cron expression:示例的 cron 表达式意味着任务将在每天的 23:00(即晚上 11 点)执行;
  • Time zone:下拉找到 Asia/Shanghai
  • Destination directory:期望保存的路径;
  • Retention days:备份的天数,如果设置为 0,将无限期保留它们;
  • Activate backup:是否激活备份;
  • Options:一些可选项,不知道怎么设,保持默认就行;

Save 保存之后

点闪电图标,直接备份

查看执行的状态

参考文档

eduardolat/pgbackweb: 🐘 Effortless PostgreSQL backups with a user-friendly web interface! 🌐💾
地址:https://github.com/eduardolat/pgbackweb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ldbm.cn/p/439351.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中的位运算-从入门到精通

你是否曾经好奇过计算机是如何在底层处理数据的?或者,你是否想知道为什么有些程序员总是津津乐道于位运算的强大?如果是,那么你来对地方了!今天,我们将深入探讨Python中的位运算,揭示它们的神奇之处,以及如何利用它们来优化你的代码。 目录 位运算:计算机的秘密语言为什么位…

如何确保光伏电站EPC施工的质量

说到保证EPC施工的质量,我们得先了解什么是EPC施工,是指:指总承包商按照合同约定,承担工程项目的设计、采购、施工等工作,并对工程的质量、安全、工期和造价全面负责。 EPC施工还有几个特点: 一体化服务&…

奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级

阿里云的通义灵码智能编码助手参与中国信通院组织的可信AI智能编码工具首轮评估,最终获得 4 级评级,成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第 2 部分:智能开发能力》为依据&…

快速格式化和格式化的区别有哪些?

磁盘通常需要格式化才能正常使用,通过格式化,磁盘结构才能被操作系统正确识别。磁盘格式化分为快速格式化和格式化(完全格式化),它们都是格式化的方法,下面是它们的详细区别。 磁盘快速格式化和格式化的区别…

【redis】数据量庞大时的应对策略

文章目录 为什么数据量多了主机会崩分布式系统应用数据分离架构应用服务集群架构负载均衡器数据库读写分离 引入缓存冷热分离架构 分库分表微服务是什么代价优势 为什么数据量多了主机会崩 一台主机的硬件资源是有上限的,包括但不限于一下几种: CPU内存…

2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用等距螺线,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

目标检测常见数据集格式

目标检测常见的数据集格式COCO、YOLO、VOC、DATA。 1、COCO 数据标注格式JSON,JSON文件中包含多个关键字段,如info、images、annotations等,分别存储了数据集的基本信息、图像信息和标注信息 COCO数据集的下载 官网地址:http://…

算法练习小技巧之有序集合--套路详细解析带例题(leetcode)

前言: 本文详细讲解Python中的有序集合SortedList和C中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用) 觉得有帮助或者写的不错可以点个赞,后面也有几道我找…

pta-2024年秋面向对象程序设计实验一-java

文章申明:作者也为初学者,解答仅供参考,不一定是最优解; 一:7-1 sdut-sel-2 汽车超速罚款(选择结构) 答案: import java.util.Scanner; public class Main { public static void main(String[] arg){ Scanner scnew Scanner(System.in); int asc.nextIn…

Java并发编程实战 06 | 为什么不建议使用线程优先级?

什么是线程优先级? 线程优先级是一个标识,用来提示操作系统或线程调度器哪个线程更重要、更需要优先执行。优先级通常是一个整数值。 在 Java 中,线程优先级的设置范围从 1 到 10,其中 1 是最低优先级,10 是最高优先…

《深度学习》OpenCV轮廓检测 轮廓近似 解析及实现

目录 一、轮廓近似 1、什么是轮廓近似 2、参数解析 1)用法 2)参数 3)返回值 4)代码解析及实现 运行结果为: 二、总结 1、概念 2、轮廓近似的步骤: 一、轮廓近似 1、什么是轮廓近似 指对轮廓进行…

紫微斗数算法的实现流程

题外话 我想了又想大凡能够修炼成绝世高手的都是“魔鬼”。只有魔鬼才会纯粹的“敢贪,敢嗔,敢痴”。 你我都困在了敢字。程序猿拿起拿锋利的刀,解构世间的一切吧!最近看西游有感而发。 “联系是普遍存在的,规律是客观…

使用 nuxi prepare 命令准备 Nuxt 项目

title: 使用 nuxi prepare 命令准备 Nuxt 项目 date: 2024/9/7 updated: 2024/9/7 author: cmdragon excerpt: 摘要:本文介绍nuxi prepare命令在Nuxt.js项目中的使用,该命令用于创建.nuxt目录并生成类型信息,以便于构建和部署。文章涵盖了命令的基本用法、指定根目录、设…

树莓派(raspberry)连接无线网络(WiFi)

一、要在树莓派(Raspberry Pi)上连接无线网络(Wi-Fi),可以按照以下步骤操作: 方法 1:通过桌面图形界面(GUI)连接 Wi-Fi 启动树莓派,进入桌面环境。在右上角…

【无人机设计与控制】 四轴飞行器的位移控制

摘要 本文介绍了一种四轴飞行器的位移控制方法,并通过Simulink模型进行仿真和验证。该方法通过PID控制器对飞行器的位移进行精确调节,以实现飞行器在三维空间中的稳定定位和路径跟踪。通过参数调节,能够适应不同的飞行任务需求,确…

计算氨基酸残基之间的键角和二面角

在蛋白质结构中,不同的角度由特定的原子位置决定。常见的原子类型包括氨基酸主链中的 Cα(α 碳)、C(羰基碳)、N(氮原子)和 O(氧原子)。为了更加清晰,下面给出几种常见角度的定义及其对应的原子类型: 使用具体原子的坐标计算键角和二面角 1. 计算 N−Cα−C 的键角…

Linux CentOS 7.9 安装mysql8

1、新建mysql文件夹 数据比较大,所以我在服务器另外挂了一个盘装mysql,和默认安装一个道理,换路径即可 cd ../ //创建文件夹 mkdir mysql //进入mysql文件夹 cd mysql 2、下载mysql8.0安装包并解压、重命名 //下载安装包 wget https://dev…

Linux系统应用(5)——编译器gcc

个人内容简介: 🍃个人主页:诉清风2023 🎈逆转时间的公式,就是珍惜现在ദ്ദി˶ー̀֊ー́ ) ✧ 目录 个人内容简介: 🎈逆转时间的公式,就是珍惜现在ദ്ദ…

docker进入容器运行命令

前言 Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和运行命令等操作。 进入 docker 容器需要执行以下步骤:打开终端窗口。使用 docker ps 命令查看正在运行的容器…