原 PG备份管理工具之PG Back Web
Tags: 原创PGPostgreSQL备份恢复逻辑备份恢复web界面pgbackweb
简介
GitHub:https://github.com/eduardolat/pgbackweb
视频:https://www.youtube.com/watch?v=vf7SLrSO8sw
PG Back Web是一个后端使用pg_dump命令逻辑导出的web界面管理方式的备份工具:
🎯 适合所有人:从个人开发者到团队。
⏱️ 节省时间:自动化备份,忘记手动任务。
⚡ 即插即用:无需浪费时间在复杂的配置上。
特性:
📦 直观的网页界面:轻松管理您的备份,无需数据库专业知识。
📅 定时备份:设置后即可忘记。PG Back Web 会处理其余的工作。
📈 备份监控:通过执行日志可视化您的备份状态。
📤 即时下载与恢复:需要时直接通过网页界面恢复和下载备份。
🖥 多版本支持:兼容 PostgreSQL 13、14、15 和 16。
📁 本地和 S3 存储:本地存储备份或添加任意数量的 S3 存储桶,以获得更大的灵活性。
❤️🩹 健康检查:自动检查数据库和目标的健康状态。
🔔 Webhook:备份完成、失败、健康检查失败或其他事件时获取通知。
🔒 安全优先:使用 PGP 加密保护您的敏感信息。
🛡️ 开源信任:在 MIT 许可证下的开源代码,基于强大的 pg_dump 工具。
🌚 黑暗模式:因为我们都喜欢黑暗模式。
docker-compose使用
https://hub.docker.com/r/eduardolat/pgbackweb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | docker pull swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/eduardolat/pgbackweb:latest docker tag swr.cn-east-3.myhuaweicloud.com/kubesre/docker.io/eduardolat/pgbackweb:latest eduardolat/pgbackweb:latest docker tag postgres:16.3 postgres:16 mkdir -p /pgbackweb cat > /pgbackweb/docker-compose.yml <<"EOF" version: '3' services: pgbackweb: image: eduardolat/pgbackweb:latest ports: - "8085:8085" # Access the web interface at http://localhost:8085 volumes: - ./backups:/backups # If you only use S3 destinations, you don't need this volume environment: PBW_ENCRYPTION_KEY: "lhr" # Change this to a strong key PBW_POSTGRES_CONN_STRING: "postgresql://pgbackweb:lhr@postgres:5432/pgbackweb?sslmode=disable" TZ: "Asia/Shanghai" # Set your timezone, optional depends_on: postgres: condition: service_healthy postgres: image: postgres:16 environment: POSTGRES_USER: pgbackweb POSTGRES_DB: pgbackweb POSTGRES_PASSWORD: lhr ports: - "8086:5432" volumes: - ./data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 EOF PBW_ENCRYPTION_KEY:你的加密密钥。请生成一个强密码并妥善保存,PG Back Web 会使用它来加密敏感数据。 PBW_POSTGRES_CONN_STRING:用于存储 PG Back Web 数据的 PostgreSQL 数据库连接字符串。 cd /pgbackweb docker-compose up -d http://ip:8085 # 重置密码 docker exec -it <container_name_or_id> sh -c change-password |
报错
0.3版本报错:
1 2 3 | [root@alldb pgbackweb]# docker-compose up -d ERROR: The Compose file './docker-compose.yml' is invalid because: Unsupported config option for services: 'postgres' |
加上version: '3'后报错:
1 2 3 4 | [root@alldb pgbackweb]# docker-compose up -d ERROR: The Compose file './docker-compose.yml' is invalid because: services.pgbackweb.depends_on contains an invalid type, it should be an array [root@alldb pgbackweb]# |
docker使用(推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | -- PG存储库 create database pgbackweb; create user pgbackweb password 'lhr' superuser; docker rm -f pgbackweb docker run -itd --name pgbackweb -h pgbackweb \ -p 8085:8085 \ --restart always \ -e TZ="Asia/Shanghai" \ -e PBW_ENCRYPTION_KEY=lhr \ -e PBW_POSTGRES_CONN_STRING="postgresql://pgbackweb:lhr@192.16.7.163:5432/pgbackweb?sslmode=disable" \ eduardolat/pgbackweb:latest docker logs -f pgbackweb # web界面方式,首次登陆需要创建一个用户 http://ip:8085 |
数据库信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [root@alldb ~]# psql "postgresql://pgbackweb:lhr@192.16.7.162:54329/pgbackweb?sslmode=disable" psql (14.9, server 16.2 (Debian 16.2-1.pgdg120+2)) WARNING: psql major version 14, server major version 16. Some psql features might not work. Type "help" for help. pgbackweb=# \dt List of relations Schema | Name | Type | Owner --------+--------------------+-------+----------- public | backups | table | pgbackweb public | databases | table | pgbackweb public | destinations | table | pgbackweb public | executions | table | pgbackweb public | goose_db_version | table | pgbackweb public | restorations | table | pgbackweb public | sessions | table | pgbackweb public | users | table | pgbackweb public | webhook_executions | table | pgbackweb public | webhooks | table | pgbackweb (10 rows) |
使用过程
使用步骤:
- Database 配置需要备份的数据库链接信息,格式:
postgresql://userName:password@hostname:5432/databaseName?sslmode=disable
- Destinations 配置S3存储,备份后的数据上传到该存储中
- Backups 备份的配置,什么时候备份,备份保存天数等
已有的S3的配置:
1 2 3 4 5 6 | region: endpoint: http://192.16.7.162:9001 aws_access_key_id: 12345678 aws_secret_access_key: 12345678 bucket: pgbk folder: pg16 |
这里的Region任意填写,例如:cn-north-1
创建Database
Name可以自选,我习惯用用IP+数据库名称
Version支持Pg13-Pg16
Connection string:数据库的链接信息,格式为
1 | postgresql://userName:password@hostname:5432/databaseName?sslmode=disable |
比如
1 | postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable |
测试后保存
创建Destination
这里使用类S3存储都可以,比如七牛云,阿里云的OSS,自建的Minio都可以。这里以Minio为例