数据库迁移版本管理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/database-migration-flyway 到 AI 助手。
技能介绍
先解决什么具体问题?
多环境数据库结构漂移时有发生:开发环境刚加完列,测试环境还在旧结构上跑,生产环境可能已经被人肉执行了临时 SQL,最后连谁改了什么、何时改的都说不清。人肉改表缺少版本化约束,改错一步就可能要熬夜回滚;发布流水线想自动升级 schema,却没有统一、可重复的迁移脚本作为依据。
这个技能如何工作?
它以 Flyway 为核心,把数据库 schema 当作可版本化的代码来管理,遵循四个关键原则:
- 只增不改:用新的迁移版本向前演进,绝不修改已执行的脚本,避免历史变更被悄悄覆盖;
- 幂等校验:Flyway 通过校验和检测脚本是否被篡改,确保每个版本对应一个清晰的时间点,历史不可逆;
- 不可变历史:回滚不靠删脚本,而是写“补偿迁移”,让数据库回到期望状态,同时保留完整变更轨迹;
- 环境一致:dev/test/prod 跑同一套迁移脚本,仅数据不同,从源头杜绝结构差异。
落地时需要遵循约定俗成的步骤:先定义迁移脚本命名规则,如 V1__create_user.sql、V2__add_index.sql;脚本必须纳入 Git,随代码一起评审;CI 在部署前自动执行 flyway migrate;遇到删列这类破坏性变更,按“软废弃→双写→删除”三步走,逐步降低风险。
适用边界与注意点
它适合需要统一管理数据库 schema 版本的团队,但并非万能药:大表加列或索引时,直接 ADD COLUMN 可能锁表,需改用在线 DDL 或分批操作;热修生产库后必须补写迁移脚本,否则环境会再次漂移;结构迁移与数据迁移要分开管理,避免职责混杂。另外,核心数据变更仍需遵守公司变更管理与备份规范,AI 输出不能替代 DBA 的评审与演练。
使用场景
- 多环境schema严重不一致,需要把本地修改写成可重复的Flyway脚本,让团队拉取后自动完成升级
- 改表依赖人肉执行SQL,导致修改历史缺失且极易出错,需要把结构变更纳入Git进行版本化管理
- 发布流水线需要接入自动化迁移,确保部署代码前环境schema严格对齐目标版本
- 生产库被热修后,需要编写补偿迁移脚本,修复历史变更记录并避免环境进一步漂移
适合人员
- 后端开发工程师,需要将数据库结构变更与应用代码统一提交Git并进行代码评审
- DevOps工程师,负责编写CI流水线,需要在部署前自动执行Flyway脚本升级目标环境
- 数据库管理员,负责管控生产环境变更风险,需要规范破坏性变更的补偿迁移流程
- 全栈开发者,希望了解Flyway的核心原理,解决多环境数据库结构漂移的问题