用PG Back Web轻松进行PostgreSQL备份

在这里插入图片描述

什么是 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.rhkb.cn/news/418620.html

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

相关文章

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

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

【Postgresql】地理空间数据的存储与查询,查询效率优化策略,数据类型与查询速度的影响

注:使用postgresql数据库会用到PostGIS 扩展。 一、安装PostGIS 扩展 在 PostgreSQL 中遇到错误 “type geography does not exist” 通常意味着你的 PostgreSQL 数据库还没有安装 PostGIS 扩展,或者 PostGIS 扩展没有被正确地安装在你的数据库中。geo…

我司使用了两年的高效日志打印工具,非常牛逼!

为了更方便地排查问题,电商交易系统的日志中需要记录用户id和订单id等字段。然而,每次打印日志都需要手动设置用户id,这一过程非常繁琐,需要想个办法优化下。 log.warn("user:{}, orderId:{} 订单提单成功",userId, or…

linux服务器之top命令详解

top:系统资源管理器 top命令类似于windows的任务管理器,可以查看内存、cpu、进程等信息(动态查看系统资源信息)在linux系统中常用top命令查看资源性能分析工具 一、参数释义: 第一行 系统时间和平均负载 top:名称22:12:46&#…

Spring Boot 部署方案!打包 + Shell 脚本详解

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_p…

一文梳理RAG(检索增强生成)的现状与挑战

一 RAG简介 大模型相较于过去的语言模型具备更加强大的能力,但在实际应用中,例如在准确性、知识更新速度和答案透明度方面,仍存在不少问题,比如典型的幻觉现象。因此,检索增强生成 (Retrieval-Augmented Generation, …

哪种超声波清洗机效果好?较好的超声波眼镜清洗机品牌推荐

作为一名拥有20年戴镜经验的眼镜爱好者,我深深体会到眼镜清洁的挑战:微小缝隙里的污垢难以触及,频繁的脏污让我苦于找不到清洁时机,而用力不当的擦拭方法更是可能对眼镜特别是镜片造成伤害,这确实让人感到苦恼&#xf…

Java专栏介绍

专栏导读 在当今这个技术飞速发展的时代,Java作为一门成熟且广泛应用的编程语言,一直是软件开发领域的中坚力量。本“Java技术”专栏旨在帮助读者深入理解Java编程语言的精髓,掌握其核心概念与高级特性,并通过实战案例提升编程技…

字符编码转换

文章目录 1. 背景2. 解决方案3. 编码转换实现3.1 shell实现3.2 python实现3.3 开源工具实现 4. 常见中文字符编码介绍4.1 字符编码解决什么问题4.2 常见的中文字符编码4.3 常见中文字符编码关系4.4 unicide字符集与utf-8 1. 背景 在团队合作开发中,经常发现组员的代…

Redis安装步骤——离线安装与在线安装详解

Linux环境下Redis的离线安装与在线安装详细步骤 环境信息一、离线安装1、安装环境2、下载redis安装包3、上传到服务器并解压4、编译redis5、安装redis6、配置redis(基础配置)7、启动redis8、本机访问redis9、远程访问redis 二、在线安装1、更新yum源2、安…

k8s 高级调度

搞懂Kubernetes调度 K8S调度器Kube-schduler的主要作用是将新创建的Pod调度到集群中的合适节点上运行。kube-scheduler的调度算法非常灵活,可以根据不同的需求进行自定义配置,比如资源限制、亲和性和反亲和性等。 kube-scheduler的工作原理如下&#x…

基于SpringBoot+Vue+MySQL的宿舍维修管理系统

系统展示 前台界面 管理员界面 维修员界面 学生界面 系统背景 在当今高校后勤管理的日益精细化与智能化背景下,宿舍维修管理系统作为提升校园生活品质、优化资源配置的关键环节,其重要性日益凸显。随着学生规模的扩大及住宿条件的不断提升,宿…

Qt/C++ 个人开源项目#串口助手(源码与发布链接)

一、项目概述 该串口助手工具基于Qt/C开发,专为简化串口通信调试与开发而设计,适合新手快速上手。工具具有直观的用户界面和丰富的功能,旨在帮助用户与串口设备建立可靠通信,便于调试、数据传输和分析。 二、主要功能 波特率&a…

【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2. Map…

视频汇聚平台LntonAIServer视频质量诊断功能--偏色检测与噪声检测

随着视频监控技术的不断进步,视频质量成为了决定监控系统性能的关键因素之一。LntonAIServer新增的视频质量诊断功能,特别是偏色检测和噪声检测,进一步强化了视频监控系统的可靠性和实用性。下面我们将详细介绍这两项功能的技术细节、应用场景…

2158. 直播获奖(live)

代码 #include<bits/stdc.h> using namespace std; int main() {int n,w,a[100000],cnt[601]{0},i,j,s;cin>>n>>w;for(i0;i<n;i){scanf("%d",&a[i]);cnt[a[i]];int x(i1)*w/100;if(!x) x1;for(j600,s0;j>0;j--){scnt[j];if(s>x){cou…

linux编译器——gcc/g++

1.gcc linux上先要安装&#xff0c; sudo yum install gcc gcc --version 可以查看当前的版本 &#xff0c;我们默认安装的是4.8.5的版本&#xff0c;比较低&#xff0c; gcc test.c -stdc99 可以使他支持更高版本的c标准 -o 可以殖指明生成文件的名字&#xff0c;可以自己…

重启顺风车的背后,是高德难掩的“野心”

以史鉴今&#xff0c;我们往往可以从今天的事情中&#xff0c;看到古人的智慧&#xff0c;也看到时代的进步。就如西汉后期文学家恒宽曾说的&#xff0c;“明者因时而变&#xff0c;知者随事而制”。 图源来自高德官方 近日&#xff0c;高德就展现了这样的智慧。在网约车市场陷…

电子电气架构---私有总线通信和诊断规则

电子电气架构—私有总线通信和诊断规则 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自…

ROS 工具箱系统要求

ROS 工具箱系统要求 要为 ROS 或 ROS 2 生成自定义消息&#xff0c;或从 MATLAB 或 Simulink 软件中部署 ROS 或 ROS 2 节点&#xff0c;您必须构建必要的 ROS 或 ROS 2 软件包。要构建这些软件包&#xff0c;您必须具备 Python 软件、CMake 软件以及适用于您的平台的 C 编译器…