2.5 KiB
2.5 KiB
Flyway 迁移规范模板(task-192)
新增数据库迁移一律在本仓库
src/main/resources/db/追加V{N+1}__*.sql(版本号在现有最大版本之上加 1), 每个迁移文件头必须引用本模板并补齐六项必填。只追加,绝不修改已部署的历史迁移(会破坏 Flyway 校验和)。
复制以下头注释到新迁移文件顶部并逐项填写:
-- =============================================================
-- 迁移 V{N+1}__<短横线描述>
-- 模板:docs/flyway-migration-template.md(task-192)
--
-- 1. 变更目的:<一句话说明要解决什么问题 / 为何变更>
-- 2. 影响表与数据量:<表名:预计行数 / 全表或增量;例如 biz_file_result ~50w 全表>
-- 3. 锁表风险:<是否 ONLINE / 是否加锁 / 大表索引类需 ALGORITHM=INPLACE 评估;风险高则拆批或窗口执行>
-- 4. 验证 SQL:<迁移后用于核对的行数 / 抽样语句,见下方示例>
-- 5. 回滚步骤:<V{N}__<desc>.sql 或补丁脚本路径;无回滚写明原因>
-- 6. 上线窗口:<建议窗口,例如 业务低峰 02:00-06:00;双节点滚动>
-- =============================================================
-- 迁移语句(DDL/DML)…
-- 可选验证(与头注释第 4 项对应)
-- SELECT COUNT(*) FROM <table>;
六项必填说明
| # | 字段 | 要求 | 反例 |
|---|---|---|---|
| 1 | 变更目的 | 一句话,写清"为什么" | 留空 / 只写表名 |
| 2 | 影响表与数据量 | 每张被改表名 + 预计行数量级 | "涉及多表" 不含表名 |
| 3 | 锁表风险 | 指出 DDL 是否 INPLACE/排他、大表评估 | "无风险" 不说明依据 |
| 4 | 验证 SQL | 迁移后可跑的核对语句 | 缺失 |
| 5 | 回滚步骤 | 回滚脚本路径或明确不可回滚原因 | 缺失 |
| 6 | 上线窗口 | 建议时段 + 是否滚动 | 缺失 |
示例验证 SQL(供第 4 项复制)
-- 迁移后行数与迁移前基线对比
SELECT COUNT(*) FROM biz_file_result;
-- 新索引是否生效(用于索引类迁移)
SHOW INDEX FROM biz_file_result WHERE Key_name = 'idx_task_module';
-- 抽样数据
SELECT id, task_id, status, updated_at FROM biz_file_task ORDER BY id DESC LIMIT 5;
使用约束
- 版本号在
src/main/resources/db/最大现有版本上加 1(当前 ≥ V109),不抢号、不重复。 - 不修改、不删除任何已执行过的历史迁移文件。
- 上线走双节点滚动 + 生产库先
flyway validate,失败即停。