字
字节笔记本
2026年2月22日
backup-db:带 Web 界面的数据库备份工具
本文介绍 backup-db,一个带 Web 界面的数据库备份工具。该项目支持 MySQL 和 PostgreSQL 数据库的自动备份,提供简洁的网页配置界面,并支持 Webhook 通知和对象存储备份功能。
项目简介
backup-db 是一个开源的数据库备份工具,由 jeessy2 开发维护。该项目在 GitHub 上获得了 77 stars,主要使用 Go 语言编写(61.8%),并采用 Docker 容器化部署方案。
注意:该项目已于 2023 年 2 月 23 日被作者归档,变为只读状态。作者推荐使用 backup-x 作为替代方案,backup-x 从 backup-db 发展而来,支持更多类型的备份功能。
核心特性
- Web 界面配置:通过浏览器即可轻松配置备份任务,无需手动编辑配置文件
- 多项目支持:最多支持 16 个备份项目同时运行
- 多数据库支持:同时支持 PostgreSQL 和 MySQL/MariaDB 数据库
- 对象存储备份:支持将备份文件上传到 S3 等对象存储服务
- 自动定时备份:每日凌晨自动执行备份任务
- 备份文件管理:可设置备份文件的最大保存天数,自动清理过期文件
- 安全认证:支持设置登录用户名和密码(默认为空)
- Webhook 通知:备份成功或失败时可通过 Webhook 发送通知
技术栈
- Go:后端主要语言,占比 61.8%
- HTML/CSS:前端界面,占比约 34.6%
- Docker:容器化部署方案
- PostgreSQL Client:用于 PostgreSQL 数据库备份
- MySQL Client:用于 MySQL/MariaDB 数据库备份
安装指南
Docker 部署(推荐)
bash
# 运行 Docker 容器
docker run -d \
--name backup-db \
--restart=always \
-p 9977:9977 \
-v /opt/backup-db-files:/app/backup-db-files \
jeessy/backup-db访问配置界面
容器启动后,打开浏览器访问 http://your_docker_ip:9977 进行配置。
快速开始
1. 启动容器
bash
docker run -d \
--name backup-db \
--restart=always \
-p 9977:9977 \
-v /opt/backup-db-files:/app/backup-db-files \
jeessy/backup-db2. 配置备份任务
- 访问 Web 界面
http://localhost:9977 - 添加新的备份项目
- 配置数据库连接信息和备份脚本
- 设置备份时间和保存策略
- 配置 Webhook 通知(可选)
使用示例
PostgreSQL 备份脚本
| 说明 | 备份脚本 |
|---|---|
| 备份单个数据库 | PGPASSWORD="password" pg_dump --host 192.168.1.11 --port 5432 --dbname db-name --user postgres --clean --create --file #{DATE}.sql |
| 备份全部数据库 | PGPASSWORD="password" pg_dumpall --host 192.168.1.11 --port 5432 --user postgres --clean --file #{DATE}.sql |
| 还原数据库 | psql -U postgres -f 2021-11-12_10_29.sql |
MySQL/MariaDB 备份脚本
| 说明 | 备份脚本 |
|---|---|
| 备份单个数据库 | mysqldump -h192.168.1.11 -uroot -p123456 db-name > #{DATE}.sql |
| 备份全部数据库 | mysqldump -h192.168.1.11 -uroot -p123456 --all-databases > #{DATE}.sql |
| 还原数据库 | mysql -uroot -p123456 db-name < 2021-11-12_10_29.sql |
Webhook 通知配置
backup-db 支持在备份成功或失败时发送 Webhook 通知,支持以下变量:
| 变量名 | 说明 |
|---|---|
#{projectName} | 项目名称 |
#{fileName} | 备份后的文件名称 |
#{fileSize} | 文件大小(MB) |
#{result} | 备份结果(成功/失败) |
常用通知平台配置
Server 酱:
https://sc.ftqq.com/[SCKEY].send?text=#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}
Bark:
https://api.day.app/[YOUR_KEY]/#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}
钉钉机器人:
- URL:钉钉提供的 Webhook 地址
- RequestBody:
json
{"msgtype": "text","text": {"content": "#{projectName}项目备份#{result},文件名:#{fileName},文件大小:#{fileSize}"}}注意事项
- 版本兼容性:v1 版本开始与 0.0.x 版本不兼容,配置方式有重大变化
- Web 配置:v1 版本后采用 Web 界面进行配置
- HTTPS 支持:如需使用 HTTPS,建议通过 Nginx 反向代理实现
- 多数据库支持:v2 版本后,一个 Docker 镜像同时支持 PostgreSQL 和 MySQL
项目链接
- GitHub 仓库:https://github.com/jeessy2/backup-db
- 推荐替代方案:https://github.com/jeessy2/backup-x
- 许可证:MIT License
分享: