字节笔记本

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-db

2. 配置备份任务

  1. 访问 Web 界面 http://localhost:9977
  2. 添加新的备份项目
  3. 配置数据库连接信息和备份脚本
  4. 设置备份时间和保存策略
  5. 配置 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}"}}

注意事项

  1. 版本兼容性:v1 版本开始与 0.0.x 版本不兼容,配置方式有重大变化
  2. Web 配置:v1 版本后采用 Web 界面进行配置
  3. HTTPS 支持:如需使用 HTTPS,建议通过 Nginx 反向代理实现
  4. 多数据库支持:v2 版本后,一个 Docker 镜像同时支持 PostgreSQL 和 MySQL

项目链接

分享: