切换主题
升级、备份与恢复
升级前保留当前制品、部署配置和可恢复数据库备份。数据库迁移随平台启动自动执行,回滚需要匹配旧制品与对应数据状态。
首次部署与日常升级
首次部署创建数据库和应用配置。日常升级复用既有数据卷、应用和版本,不重新运行初始化脚本来覆盖资源。
- 在隔离环境构建新制品并验证业务接入。
- 暂停新任务,等待活动任务到达终态。
- 备份数据库,记录当前制品版本与迁移版本。
- 单活模式先停旧实例,再启动新制品;clustered 升级遵循你的兼容性发布策略。
- 检查健康、迁移日志、应用配置与一条真实业务流程。
- 验证无误后恢复流量,保留备份直到回滚窗口结束。
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。
