跳至正文

升级、备份与恢复 ​

升级前保留当前制品、部署配置和可恢复数据库备份。数据库迁移随平台启动自动执行,回滚需要匹配旧制品与对应数据状态。

首次部署与日常升级 ​

首次部署创建数据库和应用配置。日常升级复用既有数据卷、应用和版本,不重新运行初始化脚本来覆盖资源。

  1. 在隔离环境构建新制品并验证业务接入。
  2. 暂停新任务,等待活动任务到达终态。
  3. 备份数据库,记录当前制品版本与迁移版本。
  4. 单活模式先停旧实例,再启动新制品;clustered 升级遵循你的兼容性发布策略。
  5. 检查健康、迁移日志、应用配置与一条真实业务流程。
  6. 验证无误后恢复流量,保留备份直到回滚窗口结束。

Compose 更新已构建 Jar 后执行 docker compose up -d --build platform。不要使用 docker compose down -v 升级服务。

PostgreSQL 备份 ​

平台仓库提供 PowerShell 脚本,运行前从 docker compose ps 确认准确容器名:

powershell
./scripts/backup-postgres.ps1 -Container sparktide-database-1 -Database sparktide -User sparktide -OutputFile D:/Backup/sparktide-20260929.dump

脚本创建 PostgreSQL 自定义格式备份和同名 .sha256,目标文件已存在时拒绝覆盖。备份可能包含业务文本、调用参数和审计数据,按业务数据等级加密保管。

恢复与回滚 ​

powershell
./scripts/restore-postgres.ps1 -Container sparktide-database-1 -NewDatabase sparktide_restore -User sparktide -BackupFile D:/Backup/sparktide-20260929.dump

恢复脚本校验摘要,并只允许恢复到新数据库。核对应用、Registry、Run、归档和 Flyway 记录后,显式切换平台数据库连接。脚本不会自动覆盖当前库或切换生产入口。

回滚到旧 Jar 时同时使用兼容的数据备份,不删除已执行迁移记录来伪装旧版本。H2 开发数据必须停止进程后才能复制文件备份。

归档与保留 ​

事件窗口默认 168 小时。超过窗口返回 410,不意味着底层数据已经删除。平台管理员可先执行归档预览:

http
POST /v1/apps/customer-service/maintenance/archive
Authorization: Bearer <平台管理员凭据>
Content-Type: application/json

{"dryRun":true,"limit":100}

确认留存策略后再用 dryRun:false 执行。归档保存 Run、事件和审批快照,清理热数据大字段,保留幂等摘要与审计;每批最多 100 条。导出权限、字段见运维接口。

恢复演练实测(2026-10-07) ​

平台仓库的 docs/知识沉淀/操作配方/运维治理/高可用与恢复验收.md 记录了真实演练结果,运维要点:

  • 备份与恢复脚本需用 pwsh 运行(pwsh -File scripts/backup-postgres.ps1 ...);Windows PowerShell 默认执行策略会拒绝脚本执行。
  • 恢复脚本只允许恢复到新数据库并拒绝覆盖同名库,恢复完成后需人工核验数据再显式切换平台连接;备份会生成 SHA256,恢复前校验不通过即停止。
  • 实测参考值(隔离单机环境、数十行数据):备份 2.1 秒、恢复 2.4 秒、从恢复到对外服务 6.8 秒;恢复点等于备份时刻,备份后的写入不在恢复库中。
  • 多实例部署必须共享同一 PostgreSQL 并显式开启集群模式;实例失联的运行会在 30 秒心跳窗口后被终结为 WORKER_LOST,该运行不会迁移重放。
  • 数据库中断时平台现为有界失败:业务请求约 3 秒返回 503 DATABASE_UNAVAILABLE(可重试),就绪探针返回 503,数据库恢复后约 0.25 秒重新服务。超时可用 SPARKTIDE_DB_*_TIMEOUT_* 环境变量调整。
  • 这些数字来自单机容器与极小数据量,不构成生产恢复时间承诺;正式验收需在目标主机与真实数据量下复测。

数据留存与到期清理 ​

平台默认不限留存、不自动删除。平台管理员可在运维接口按类别配置留存与执行清理,六个类别为运行事件、运行确认、告警投递、已恢复告警、审计与归档快照;每类可先预览可清理数量,再决定是否启用或手动执行。

  • 待发通知、未恢复告警、未启用类别永不清理;运行事件可用“仅已有归档快照的运行”选项保护可重放数据。
  • 清理是删除且不可撤销:删除审计记录前请确认合规要求,删除归档后无法再导出历史运行。
  • 事件与确认没有独立时间列,按所属运行的创建时间判定,因此同一运行的两类记录无法分设期限。
  • 字段级与全文脱敏规则尚未实现;当前只有按名称/应用/来源的密钥遮蔽。
  • 详细字段与操作顺序见平台仓库 docs/知识沉淀/操作配方/运维治理/留存与到期清理.md。
适用版本:0.1 发布线 · 最近核对:2026-09-29 · SparkTide 产品文档

汇聚智能,驱动涌现。