用PG Back Web轻松进行PostgreSQL备份

news2024/9/23 5:32:50

在这里插入图片描述

什么是 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:latest
    container_name: pbw-pgbackweb
    ports:
      - "8085:8085" # Access the web interface at http://localhost:8085
    environment:
      PBW_ENCRYPTION_KEY: "my_secret_key"
      PBW_POSTGRES_CONN_STRING: "postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable"
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:15
    container_name: pbw-postgres 
    # ports:
    #   - "5433:5432"
    environment:
      POSTGRES_DB: pgbackweb
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    volumes:
      - ./data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  minio:
    image: minio/minio
    container_name: pbw-minio
    ports:
      - "9900:9000"
      - "9901:9090"
    environment:
      MINIO_ROOT_USER: "root"
      MINIO_ROOT_PASSWORD: "password"
    volumes:
      - ./minio:/data
    command: 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.coloradmin.cn/o/2111022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA—网络通信

本文是学习网络通信入门和简单了解UDP协议和TCP协议,学习和了解CS架构和简单了解BS架构和HTTP协议(部分图片来自黑马程序员) 目录 1.网络通信三要素 (1)IP地址 (2)端口号 (3&am…

RHCE必过技巧,无需本人参加也可拿证?

RHCE(无需本人参加,给信息给款即可拿证) ​培训+认证 ​月初一期 ​月尾一期

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶…

生命科学、食品科学信息类综合全文数据库

一、Nature系列资源 《Nature》杂志1869年创刊于英国,是最早的国际性科技期刊,其办刊宗旨是“将科学发现的重要结果介绍给公众,让公众尽早知道全世界自然知识的每一分支中取得的所有进展”。它报道和评论全球科技领域里最重要的突破&#xf…

【2024全国大学生数学建模竞赛】B题 模型建立与求解(含代码与论文)

目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明(等四问全部更新完再写)5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成&#xff…

python_使用tkinter建立一个页面的模板

python_使用tkinter建立一个页面的模板 效果如图, 代码如下 """ python设计一下tkinter的布局在最上面排列5个按钮,然后一排4个水平分布的按钮,下面分左右两个图像显示,默认为白色背景为了实现您所描述的Tkinter布局&…

计组 2.Linux上程序的编写与调试

1. 我们之间使用vim创建.c文件,在里面编写完成后按住esc后冒号加wq保存退出 再使用gcc编译.c文件即可 vim test.c gcc test.c2. 这道题对比上一道题多出了编译过程,我们只需要按要求编译即可 gcc -E hello.c -o hello.i # 预处理阶段 gcc -S hello.i…

【超详细】windows Docker安装

关于 Docker 可以把应用以及其依赖都打包到一个容器中,而这个容器的性能开销极低。 Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式&#xff0c…

opencv实战项目二十一:MediaPipe人体姿态检测

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、MediaPipe是什么?二、MediaPipe使用:三、算法流程:四、效果: 前言 在智能科技不断渗透我们日常生活的今天&…

redis分布式锁和lua脚本

业务场景:多个线程对共同资源的访问:库存超卖/用户重复下单的原因 解决方法一:利用jvm内置锁,将非原子性操作变成原子性操作 Synchronized锁的是对象,对象必须是单例的。锁的是this,代表当前所在的类,这个…

“电轿三巨头”集齐,新车能否后浪拍前浪?

文/王俣祺 导语:纵观全年,要说哪款电车最火,那必然得是小米SU7。小米SU7在今年上半年上市以来,基本垄断了整个国产20万级电轿市场,甚至具备了和称霸电轿市场已久的特斯拉Model 3掰掰手腕的实力。那么,如今的…

Stream插件相关的用法

文章目录 1. 概念介绍2. 使用方法2.1 StreamController2.2 StreamBuilder 3. 示例代码 我们在上一章回中介绍了管理Stream事件流相关的内容,本章回中将介绍如何使用Stream事件流输入输出数据 。闲话休提,言归正传,让我们一起Talk Flutter吧。…

FPGA搭建XDMA中断模式的PCIE通信架构,简单读写测试,提供7套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案 3、PCIE基础知识4、工程详细设计方案工程设计原理框图XDMA配置及使用XDMA中断模块数据缓存架构用户逻辑Windows版本XDMA驱动安装Linux版本XDMA驱动安装测试应用程序工程源码架构PCIE上板调试注意事项 5、vivado工…

2024年了,软件测试已经饱和了?

这个年头找工作跟找对象一样难,咳咳,工作对象都木有,双重打击5555。 关于今年的就业市场,很多人表示特别惨淡,以往简历一投就有大批企业来联系,今年自己投递一大堆简历出去,可能全部都是已读不…

黑神话悟空现在有哪些结局?黑神话悟空攻略来啦!

结局 1:天命人戴上金箍,继承了大圣意志,成为了新大圣。 最终 Boss:孙悟空:玩家需经历两场遭遇战,‌每场都分为两个阶段。‌ 首战,‌玩家需独自对抗石猴;‌而在第二阶段,‌则要面对两位掌握不同元素力量的…

Nacos注册中心与OpenFeign远程调用

文章目录 一、注册中心原理二、Nacos注册中心三、服务注册四、服务发现五、OpenFeign 一、注册中心原理 在微服务当中必须有两个角色 服务提供者:提供接口供其它微服务访问 服务消费者:调用其它微服务提供的接口 在大型微服务项目中,服务提供…

3600+银行财务数据大全(1954-2022年)

3600银行财务数据,包括农村商业银行、村镇银行、外资银行、民营银行、股份制商业银行、城市商业银行、大型商业银行、农村合作银行、其他商业银行等。共计120个指标,银行基本信息、业务发展、财务指标、信贷资产、员工、负债等数据 一、数据介绍 数据名…

ChatTCP:一款离线TCP数据包分析macOS APP,致力于让分析TCP数据包像看聊天记录一样简单

ChatTCP是一款离线TCP数据包分析macOS APP,致力于让分析TCP数据包像看聊天记录一样简单!已为UI交互方式申请专利,独家聊天会话方式分析TCP数据包,给你不一样的TCP数据包分析体验! ChatTCP是Easy TCP Analysis的离线版本&#xff…

【docker】了解什么是Docker

一、前言 最近,在学习如何部署项目的时候,老是出错误,然后朋友推荐了去学一下docker,然后自己就去学了【尚硅谷】的关于docker的教程视频,学完之后,感觉docker真的强,可以把我们做好的app的进行跨平台、快速…

vue3+ts项目引入vue-codemirror实现yaml代码编辑器

重要提示 重新安装依赖后一定要重启项目!!! 网上搜到的案例拿过来都报错?那应该是插件的版本不一样,先弄清版本!!! 本示例相关版本如下 npm i vue-codemirror6 // 按自己所需的…