All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
1.9 KiB
1.9 KiB
公共基础迁移发布与数据安全回滚
执行顺序
- 使用
./scripts/test-tech-public-foundation.sh完成真实依赖公共接缝验收,再使用go run ./cmd/foundation-check --phase pre执行只读前置检查。 - 依次执行
000165_create_public_outbox、000166_create_system_config正向迁移。 - 使用
go run ./cmd/foundation-check --phase post验证字段、约束、索引、异常计数和事务内读写冒烟。 - 部署兼容 API 和 Outbox Relay/Worker,确认监控就绪后再部署依赖消费者,最后允许前端或生产者放量。
门禁报告只输出稳定错误码、数据库对象安全标识和计数。依赖迁移版本不足或脏状态、对象定义冲突、重复身份、空值、非法枚举、未完成任务、未投递事件和过期租约均以非零状态阻断。
数据迁移与隔离
165/166 只创建新的公共表和索引,不回填历史业务数据,因此没有批次回填步骤。后续确需回填时必须按稳定主键分批记录进度,允许中断重跑并验证行数守恒;不得借本次迁移扫描或改写下游业务表。
自动化验收在独立 PostgreSQL schema 和测试事务内执行,只删除本次创建的 schema 或依赖事务回滚,不执行全库清理。Redis/Asynq 测试使用唯一事件 ID 和配置 Key,并只删除本次任务与缓存键。
回滚边界
新增表为空时,down 迁移允许删除结构。任一公共表已经保存事件或配置事实时,down 迁移主动失败;发布负责人必须停止新生产者、停止 Relay 领取、保留已有事实,回滚无数据风险的应用版本,并修复后向前恢复。禁止通过删表、清空 Outbox 或删除配置事实完成降级。
停止条件包括:迁移门禁异常、Outbox 持续积压或过期租约大量增加、配置读写不一致、Access Log 脱敏回归失败和关键任务无法恢复。