Skeema MySQL 架构变更差异审查
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/diff-and-review-mysql-schema-changes-as-filesystem-managed-sql-before-risky-database-deploys-with-skeema
技能介绍
数据库变更的「黑箱」困境
直接在 MySQL 实例上执行 ALTER TABLE 时,你面临三个核心问题:变更脚本散落在聊天记录或工单里,无法版本化追踪;执行前看不到完整影响面,只能在上线后发现锁表或数据回填问题;多人协作时,谁改了什么、为什么改,往往靠口头同步。这些盲区在高并发、多环境部署时尤其危险——一次忘记加索引的查询优化,可能让线上服务在流量高峰时雪崩。
把架构变更变成可审查的 SQL
这个技能的核心思路是:将线上 schema 拉取为本地文件,用 Git 的方式管理变更,在推送前完成差异审查。具体工作流程:
- 拉取线上结构:通过
skeema pull将目标 MySQL/MariaDB 实例的表结构同步到本地文件系统,生成.sql文件表示当前状态 - 生成差异对比:修改本地
.sql文件或使用skeema diff命令,技能会生成标准化的ALTER STATEMENT,明确展示将要执行的变更 - 本地审查:在推送前,通过
skeema diff的输出审查具体影响——是否锁表、是否涉及大表回填、是否有依赖关系冲突 - 推送变更:审查通过后,使用
skeema push将变更应用到线上,支持 dry-run 预览
关键优势在于:所有变更都变成可版本化的 .sql 文件,配合 Git 提交历史,谁改了什么一目了然;skeema diff 在推送前生成完整变更脚本,避免上线后发现意外影响。
适用边界与注意点
适用场景:需要管理多个 MySQL 实例 schema 一致性的团队;希望将 DDL 变更纳入代码审查流程的团队;需要在上线前评估变更影响的运维场景。
前提条件:需要已安装 Skeema CLI;需要对目标 MySQL/MariaDB 实例有 schema 读取权限;需要有本地文件系统或 Git 仓库存储 schema 文件。
重要限制:技能关注的是 schema 结构变更(DDL),不处理数据迁移(DML);对于大表变更,即使使用了 skeema,仍需评估锁表策略(如 ALGORITHM=INPLACE 或 pt-osc);多个实例间的 schema 一致性需要额外工具(如 skeema diff 的跨实例对比功能)。
不要用它替代完整的数据库迁移工具(如 Flyway 或 Liquibase),它的定位是轻量级的 schema 管理 + 审查流程,适合作为现有发布流程的补充。
使用场景
- 多环境上线前,拉取各环境 schema 做差异对比,确认没有遗漏的表结构变更
- 大表加索引或改字段前,在本地预览完整 ALTER 语句,评估是否锁表
- 团队多人改同一批表结构,通过 Git 提交记录追踪每次 schema 变更
- 线上实例结构漂移,拉取当前 schema 与预期版本对比,定位差异
适合人员
- 负责线上 MySQL 变更的 DBA,需要在部署前审查 DDL 影响范围
- 管理多环境数据库的后端工程师,需要确保开发、测试、生产 schema 一致
- 小团队技术负责人,希望把表结构变更纳入 Git 代码评审流程
- 负责数据库发布流程的运维工程师,需要在上线前验证变更脚本正确性