简介
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使用
1-- PG存储库
2create database pgbackweb;
3create user pgbackweb password 'lhr' superuser;
4
5
6docker rm -f pgbackweb
7docker run -itd --name pgbackweb -h pgbackweb \
8 -p 8085:8085 \
9 --restart always \
10 -e TZ="Asia/Shanghai" \
11 -e PBW_ENCRYPTION_KEY=lhr \
12 -e PBW_POSTGRES_CONN_STRING="postgresql://pgbackweb:lhr@192.16.7.163:5432/pgbackweb?sslmode=disable" \
13 eduardolat/pgbackweb:latest
14
15docker logs -f pgbackweb
16
17
18# web界面方式,首次登陆需要创建一个用户
19http://ip:8085
数据库信息:
1[root@alldb ~]# psql "postgresql://pgbackweb:lhr@192.16.7.162:54329/pgbackweb?sslmode=disable"
2psql (14.9, server 16.2 (Debian 16.2-1.pgdg120+2))
3WARNING: psql major version 14, server major version 16.
4 Some psql features might not work.
5Type "help" for help.
6
7pgbackweb=# \dt
8 List of relations
9 Schema | Name | Type | Owner
10--------+--------------------+-------+-----------
11 public | backups | table | pgbackweb
12 public | databases | table | pgbackweb
13 public | destinations | table | pgbackweb
14 public | executions | table | pgbackweb
15 public | goose_db_version | table | pgbackweb
16 public | restorations | table | pgbackweb
17 public | sessions | table | pgbackweb
18 public | users | table | pgbackweb
19 public | webhook_executions | table | pgbackweb
20 public | webhooks | table | pgbackweb
21(10 rows)
22
使用过程
使用步骤:
Database 配置需要备份的数据库链接信息,格式:
postgresql://userName:password@hostname:5432/databaseName?sslmode=disable
Destinations 配置S3存储,备份后的数据上传到该存储中
Backups 备份的配置,什么时候备份,备份保存天数等
已有的S3的配置:
1 region:
2 endpoint: http://192.16.7.162:9001
3 aws_access_key_id: 12345678
4 aws_secret_access_key: 12345678
5 bucket: pgbk
6 folder: pg16
创建Database
Name可以自选,我习惯用用IP+数据库名称
Version支持Pg13-Pg16
Connection string:数据库的链接信息,格式为
1postgresql://userName:password@hostname:5432/databaseName?sslmode=disable
比如
1postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable
测试后保存
创建Destination
这里使用类S3存储都可以,比如七牛云,阿里云的OSS,自建的Minio都可以。这里以Minio为例
Name可以自定义
Bucket Name 需要填写Minio中的Bucket
Endpoint 服务器的IP及端口,请注意这里要pgbackweb容器能访问的地址
Region 可随意填写
Access Key,Secret key 填写Minio的默认用户名密码即可。
点击Test Connection 右下角跳出Connection successful
代表配置没问题
配置Backup
Database 选择已经创建的数据库连接
Local backups
Local backups are stored in the server where PG Back Web is running. They are stored under /backups directory so you can mount a docker volume to this directory to persist the backups in any way you want.
Remote backups
Remote backups are stored in a destination. A destination is a remote S3 compatible storage. With this option you don't need to worry about creating and managing docker volumes.
Destination 选择已创建的存储地址,多个Database可以用一个,用的Destnation directory区分即可
Cron是不带星期的格式,比如每天夜里2点 备份:0 2 * * *
Time zone是Cron表达式的时区,选自己所在的时区即可
Destnation directory是在S3中的文件夹,这里可以使用Database名称作为文件夹,更方便区分,例如/pgbackweb
Retention days 保留天数,自定义,当然也要看备份存储的成本
Options 无特殊要求默认即可
保存后,点击小闪电,即可立即执行备份
在S3中查看:
总结
1、存储库不能使用GP,可以使用PG 16,否则报错:
1[root@alldb ~]# docker logs -f pgbackweb
2task: [migrate-serve] task goose -- up
32024/10/08 17:10:01 goose run: ERROR: syntax error at or near "GENERATED" (SQLSTATE 42601)
4task: Failed to run task "goose": exit status 1
5task: Failed to run task "migrate-serve": exit status 201
2、支持版本PG 13到16版本,但其实低版本的PG也是可以备份的
3、备份使用的是pg_dump命令,属于逻辑导出工具
4、备份GreenPlum数据库会报错,只能备份PG数据库
参考
https://mp.weixin.qq.com/s/mdI4-zkvT0fzclJx94hvqw
https://blog.csdn.net/wbsu2004/article/details/141966009#:~:text=eduardolat
https://blog.lianglianglee.com/posts/fa974d33#:~:text=pgbackweb%E6%98%AF