Skip to content

Releases: Awuqing/BackupX

v2.3.5

13 May 06:28
7084d47

Choose a tag to compare

What's Changed

  • feat(BackupX): harden agent cluster backup workflow by @Awuqing in #61

Full Changelog: v2.3.4...v2.3.5

v2.3.4

09 May 15:53

Choose a tag to compare

Full Changelog: v2.3.1...v2.3.4

Full Changelog: v2.3.1...v2.3.4

v2.3.3

01 May 09:33

Choose a tag to compare

What's Changed

  • feat: add complete MFA support by @Awuqing in #51
  • fix: respect local timezone for scheduler by @Awuqing in #54

Full Changelog: v2.3.2...v2.3.3

What's Changed

  • feat: add complete MFA support by @Awuqing in #51
  • fix: respect local timezone for scheduler by @Awuqing in #54

Full Changelog: v2.3.2...v2.3.3

v2.3.2

01 May 08:43

Choose a tag to compare

Full Changelog: v2.2.1...v2.3.2

v2.3.1

01 May 06:54

Choose a tag to compare

What's Changed

  • fix: respect local timezone for scheduler by @Awuqing in #54

Full Changelog: v2.3.0...v2.3.1

What's Changed

  • fix: respect local timezone for scheduler by @Awuqing in #54

Full Changelog: v2.3.0...v2.3.1

v2.3.0

25 Apr 14:54

Choose a tag to compare

What's Changed

Full Changelog: v2.2.1...v2.3.0

v2.2.1

25 Apr 05:46

Choose a tag to compare

What's Changed

  • fix: make agent install command proxy independent by @Awuqing in #50

Full Changelog: v2.2.0...v2.2.1

v2.2.0 — 节点池调度 + Grafana Dashboard

21 Apr 06:09

Choose a tag to compare

v2.2.0 — 集群运维闭环

v2.1 给了 的能力,v2.2 补齐 调度可视化

新特性

🎯 节点池动态调度

  • model.Node.Labels CSV 标签 + model.BackupTask.NodePoolTag
  • 任务不再只能绑定固定节点:配置 NodePoolTag 后,从命中标签的在线节点中按"当前运行任务数最少"自动选
  • 空池立即报错(NODE_POOL_EMPTY),不静默吞错
  • NodeIDNodePoolTag 互斥(校验层拦截)
  • 不回写 task.NodeID,每次执行重新选 → 真轮转均衡

📊 Grafana Dashboard 预置

  • deploy/grafana/backupx-dashboard.json 11 面板:
    • 概览 stat:运行中任务 / SLA 违约 / 在线节点 / 24h 成功率 / 应用版本
    • 时序:任务速率堆叠、P50/P95/P99 耗时、产出字节、验证/恢复/复制成功率
    • 容量:存储目标用量 TopN / 节点在线状态表(0/1 → 红/绿)
  • deploy/grafana/README.md 含 Prometheus 抓取配置 + AlertManager 建议
  • Release workflow 打包 grafana/ + nginx.conf 到 tar.gz

👀 Agent 版本漂移 UI

  • 节点列表 Agent 版本列:与 Master 不同时橙红 Tag + Tooltip 提示升级
  • 新增"标签/节点池"列,Tag 渲染
  • 编辑弹窗支持 Labels / MaxConcurrent / BandwidthLimit 一起改

升级指南

完全兼容 v2.1,无需迁移:

  • Labels / NodePoolTag 新字段默认为空,老任务行为不变
  • 想启用节点池:节点管理页编辑节点,填 prod,db 类标签;任务表单新增的节点池字段填 db 即可

Grafana 导入:下载发布包中的 grafana/backupx-dashboard.json,在 Grafana → Dashboards → Import 上传即可。

Changelog

  • 功能: v2.2 节点池调度 + Grafana Dashboard + 版本漂移 UI — #49

完整提交:v2.1.0...v2.2.0

What's Changed

  • 功能: v2.2 节点池调度 + Grafana Dashboard + 版本漂移 UI by @Awuqing in #49

Full Changelog: v2.1.0...v2.2.0

What's Changed

  • 功能: v2.2 节点池调度 + Grafana Dashboard + 版本漂移 UI by @Awuqing in #49

Full Changelog: v2.1.0...v2.2.0

v2.1.0 — 可观测性与集群流控

20 Apr 15:38

Choose a tag to compare

v2.1.0 — 让 BackupX 融入企业 SRE 体系

在 v2.0 "企业级备份管理平台" 基础上,本版本专注投入生产后的运维体验

新特性

🔭 可观测性(PR #47

  • Prometheus /metrics 端点:11 类指标开箱即用
    • 任务计数 / 耗时直方图 / 产出字节
    • 正在运行任务数 / 存储用量 / 节点在线
    • 验证、恢复、复制各自的成功失败计数
    • SLA 违约任务数 gauge
  • 独立 registry + 30s 异步 Gauge collector,请求路径无慢 IO

🎚️ 流控精细化(PR #47

  • 节点级带宽限速model.Node.BandwidthLimit 现在会实际生效,覆盖全局默认
  • 大/小节点可独立配置上行带宽,避免弱网节点挤爆集群

📤 审计日志 Webhook(PR #47

  • 每条审计事件异步转发到外部 URL,HMAC-SHA256 签名防伪造
  • 配置路径:PUT /api/settings 设置 audit_webhook_url + audit_webhook_secret
  • 适合 SIEM / WORM 存储集成,满足 SOC2 / GDPR 合规

修复

🐛 #46 Agent 一键安装脚本在 Debian/反向代理场景下执行失败(PR #48

用户反馈 curl -fsSL URL | sudo sh 在 Debian 12 报 "sh: 2: Syntax error: newline unexpected"。根因是用户的 nginx 只转发 /api//install/:token 被 SPA try_files fallback 成了 index.html。curl 拿到 HTML 喂给 sh 当然报错。

修复:

  • 新增 /api/install/:token 路径别名,自动走反向代理的 /api/ 转发规则
  • 前端生成的 install URL 改用 /api/install/ 前缀
  • 前端推荐命令改为 | sudo bash(避开 Debian dash 差异)
  • 脚本模板加魔数标记 + bash 自举段,方便用户自查响应完整性
  • install handler Content-Type 改 text/plain,加 nosniff / no-store / Content-Disposition 防嗅探
  • deploy/nginx.conf 模板加 /install/ / /health / /ready / /metrics 单独转发

升级指南

完全兼容 v2.0,无需迁移。

  • 已有 nginx 反向代理用户:重新生成节点安装命令即可,新 URL 用 /api/install/ 前缀自动命中已有代理
  • 想接 Prometheus:抓取 http://your-backupx:8340/metricsscrape_interval: 30s 建议
  • 想配审计外输:PUT /api/settings 写入 audit_webhook_url + audit_webhook_secret

Changelog

  • $(gh pr view 47 --repo Awuqing/BackupX --json title --jq .title) — #47
  • $(gh pr view 48 --repo Awuqing/BackupX --json title --jq .title) — #48

完整提交:v2.0.0...v2.1.0

What's Changed

  • 功能: v2.1 可观测性与流控 by @Awuqing in #47
  • 修复: #46 Agent 一键安装脚本在 Debian dash 下执行失败 by @Awuqing in #48

Full Changelog: v2.0.0...v2.1.0

What's Changed

  • 功能: v2.1 可观测性与流控 by @Awuqing in #47
  • 修复: #46 Agent 一键安装脚本在 Debian dash 下执行失败 by @Awuqing in #48

Full Changelog: v2.0.0...v2.1.0

v2.0.0 — 企业级备份管理平台

20 Apr 05:06

Choose a tag to compare

v2.0.0 — 从"能备份"升级为"企业级备份管理平台"

本版本围绕可靠、可验证、可度量、可冗余、可治理、可规模化、可运维、可部署、可感知的九大企业级支柱,新增 70+ 文件、14k+ 行代码,全链路测试与类型检查通过。

⚠️ 破坏性变更POST /backup/records/:id/restore 返回格式由同步 {restored: true} 改为异步 {restoreRecordId, status, ...}。使用旧 API 的脚本需要改造。详情见文末"升级指南"。


集群能力

  • 节点选择器修复:任务表单新增执行节点选择,此前集群场景任务被迫 NodeID=0 的 Bug 得到修复
  • 集群感知恢复RestoreRecord 独立表 + 节点路由(本机/远程 Agent)+ SSE 实时日志 + 异步执行
  • 集群可靠性
    • Agent 命令超时联动备份/恢复记录状态
    • 离线节点拒绝执行,避免空等
    • 调度器自动跳过离线节点,不再堆积 failed 记录
    • 数据库发现(MySQL/PostgreSQL)路由到目标节点执行
    • 跨节点 local_disk 保护:Master 不再误访问远程节点本地磁盘
  • 节点级资源配额Node.MaxConcurrent / BandwidthLimit + per-node semaphore
  • Agent 版本感知ClusterVersionMonitor 扫描远程 Agent 版本,落后 Master 时派发 agent_outdated 事件
  • Dashboard 集群概览:总节点 / 在线 / 离线 / Agent 过期数一眼可见
  • 节点性能统计:每节点执行次数 / 成功率 / 字节数 / 平均耗时

核心企业能力

备份验证(合规刚需)

  • 新增 verification_records 表 + VerificationService
  • 5 类备份格式原生校验:tar / sqlite / mysql dump / postgresql dump / saphana archive
  • 定时验证 cron + 手动触发,失败派发 verify_failed 事件
  • 独立 "验证演练" 页面与 SSE 日志

SLA 监控

  • BackupTask.SLAHoursRPO + AlertOnConsecutiveFails 两个企业级字段
  • 后台 15 分钟扫描违约任务,派发 sla_violation 事件(同任务 6 小时内不重复告警)
  • Dashboard 合规视图:合规率 / 违约任务列表 / 距上次成功时间

3-2-1 备份复制

  • 新增 replication_records 表 + ReplicationService
  • 每次备份成功后自动镜像到副本存储;也支持手动触发
  • 跨节点 local_disk 源自动拒绝(Master 无法访问远程)
  • 失败派发 replication_failed 事件

RBAC + API Key(企业身份治理)

  • 三级角色:admin / operator / viewer
  • RequireRole / RequireNotViewer 中间件保护所有写入类端点
  • API Key(bax_ 前缀,HMAC-SHA256 + pepper 哈希存储)
    • 用于 CI/CD、监控脚本等非交互场景
    • 支持 TTL、启停、撤销、LastUsedAt 追踪
  • 前端菜单按角色过滤,viewer 自动隐藏写入按钮

事件总线

11 类事件,前后端共享:backup_success / backup_failed / restore_success / restore_failed / verify_failed / sla_violation / storage_unhealthy / storage_capacity_warning / replication_failed / agent_outdated / storage_capacity_warning

  • Notification 可订阅任意组合(Webhook/邮件/Telegram)
  • EventBroadcaster(SSE)推送到前端 Dashboard / EventCenter

规模化运维

  • 任务模板:常用参数一次保存,一键批量创建(100+ 任务场景)
  • 任务批量操作:批量执行 / 启停 / 删除
  • 任务依赖链(工作流):上游成功触发下游 + DAG 可视化 + 循环检测
  • 维护窗口:时段化调度控制(支持跨夜 / 星期过滤 / 多段)
  • 任务标签:多标签筛选 + 筛选交集
  • 任务配置 JSON 导入/导出:集群迁移 & 灾备场景
  • 全局搜索(Ctrl+K):跨任务 / 记录 / 存储 / 节点模糊匹配

合规 & 可观测

  • 审计日志高级筛选 + CSV 导出(UTF-8 BOM,Excel 兼容)
  • Dashboard 多维统计(按类型 / 状态 / 节点 / 存储分组)+ 柱状图 / 饼图
  • 存储目标健康监控(每 5 分钟测试启用目标,掉线告警)
  • 存储容量监控(85% 预警 + 硬配额上传前拒绝)
  • Agent 事件订阅(实时 SSE 流 + Toast 通知 + 历史抽屉)

可部署(容器编排)

  • /health liveness 端点:进程存活检查
  • /ready readiness 端点:数据库连通检查
  • K8s Deployment / Docker Swarm / Nomad 可直接接入

安全加固

  • 用户账号支持停用(User.Disabled
  • 最后一个 admin 防删除保护
  • API Key 使用 HMAC-SHA256 + 应用级 pepper(RFC 2104)
  • JWT/API Key 双通道认证中间件
  • 审计日志覆盖所有写入类操作

升级指南

数据库

全部新增字段 / 表走 AutoMigrate 自动迁移,无需手动操作。默认值均为 null / 空 / 0,对现有配置零影响。

HTTP API 破坏性变更

  • POST /backup/records/:id/restore

    • 旧:同步阻塞执行,返回 {restored: true}
    • 新:异步触发,返回 {restoreRecordId, taskId, status: "running", ...}
    • 迁移:脚本改为读取 restoreRecordId,然后 poll /restore/records/:id 或订阅 /restore/records/:id/logs/stream
  • GET /audit-logs

    • 新增可选参数:action / username / targetId / keyword / dateFrom / dateTo
    • 向后兼容:仅传 category/limit/offset 时行为不变
  • 前端 Bundle

    • 依赖新端点:/events/stream/search/dashboard/{sla,cluster,breakdown,node-performance}/users/api-keys/task-templates/replication/records/verify/records/restore/records/backup/tasks/batch/*/backup/tasks/{import,export}
    • 升级 Master 后必须同步更新前端(Docker 镜像内置)

Docker 用户

docker pull awuqing/backupx:v2.0.0
docker stop backupx && docker rm backupx
docker run -d --name backupx -p 8340:8340 -v backupx-data:/app/data awuqing/backupx:v2.0.0

裸机用户

curl -LO https://github.com/Awuqing/BackupX/releases/download/v2.0.0/backupx-linux-amd64.tar.gz
tar xzf backupx-*.tar.gz && cd backupx-* && sudo ./install.sh

限制与未做

  • Agent 自更新:当前需手动升级 Agent,下版本支持远程下发二进制
  • 加密密钥轮换:当前密钥生成后固定,下版本支持轮换与数据重加密
  • PITR 增量备份:MySQL/PostgreSQL 目前仅支持全量备份
  • SSO / OIDC:当前仅账号 + JWT + API Key,下版本扩展 SSO
  • 任务配置导入:同名任务跳过不覆盖(避免误操作),需要覆盖时先删除

全链路验证

  • go build ./... / go vet ./... / go test ./... -count=1
  • npx tsc --noEmit / npm run build
  • ✅ CodeQL 安全扫描通过(HMAC-SHA256 + pepper)
  • ✅ 10 份设计文档(docs/superpowers/specs/

感谢使用 BackupX。遇到问题请通过 GitHub Issues 反馈。

What's Changed

  • 文档: 新增 Docusaurus 官网与双语文档,README 切换为英文默认 by @Awuqing in #39
  • 文档: 按 Ant/Arco Design 风格重构官网首页,修正 API 参考,完善 i18n by @Awuqing in #41
  • 修复: 中文 i18n 目录从 zh-Hans 改为 zh-CN,首页 SSR 翻译现已生效 by @Awuqing in #42
  • 功能: 一键部署 Agent 向导(Issue #43) by @Awuqing in #44
  • 功能: v2.0.0 企业级备份管理平台 — 11 项核心能力 by @Awuqing in #45

Full Changelog: v1.6.0...v2.0.0

What's Changed

  • 文档: 新增 Docusaurus 官网与双语文档,README 切换为英文默认 by @Awuqing in #39
  • 文档: 按 Ant/Arco Design 风格重构官网首页,修正 API 参考,完善 i18n by @Awuqing in #41
  • 修复: 中文 i18n 目录从 zh-Hans 改为 zh-CN,首页 SSR 翻译现已生效 by @Awuqing in #42
  • 功能: 一键部署 Agent 向导(Issue #43) by @Awuqing in #44
  • 功能: v2.0.0 企业级备份管理平台 — 11 项核心能力 by @Awuqing in #45

Full Changelog: v1.6.0...v2.0.0