MySQL DDL审核工具:上线前检查表结构变更风险

DeltaScope 是一个离线优先的 MySQL DDL审核工具,用于 SQL 上线审核。它在 ALTER TABLE、CREATE TABLE 等表结构变更真正执行之前,解析 SQL 文本并评估风险规则,给出 blocker、warning、notice 三级结论。DeltaScope 不连接生产数据库,默认离线审核。

工作原理

将一条或多条 MySQL DDL 语句传给 DeltaScope,它会解析 SQL、评估所有适用规则,返回结构化审核结果。整个过程无需数据库连接。

$ deltascope audit --sql "ALTER TABLE users DROP COLUMN age;"

Verdict: reject
Statements: 1
Blockers:   1
Warnings:   0
Notices:    0

Statement 1: ALTER TABLE
- [blocker] ddl.alter.drop.column: dropping column "age" is a destructive change

MySQL DDL 审核覆盖范围

SQL 上线审核集成方式

DeltaScope 提供 CLI、CI 集成、HTTP 服务、Go SDK、MCP 服务五种入口,全部使用同一套审核引擎。

CI 集成

# GitHub Actions
- name: Audit SQL migrations
  run: |
    deltascope audit \
      --file ./migrations/20260409_drop_column.sql \
      --format github-actions \
      --fail-on blocker

也支持 --format sarif(GitHub Code Scanning)和 --format gitlab-codequality(GitLab CI)。

DeltaScope 不是什么

常见问题

DeltaScope 需要连接数据库吗?
不需要。默认模式是离线审核,只解析 SQL 文本,不需要任何网络连接。可选的元数据感知模式可以连接数据库读取表统计信息,但这不是必须的。
支持哪些 MySQL DDL 语句?
CREATE TABLE、ALTER TABLE(增删改列、重命名、改字符集、增删索引)、DROP TABLE、TRUNCATE TABLE、CREATE VIEW 等。运行 deltascope rules 查看完整规则列表。
可以自定义规则严重级别吗?
可以。每条规则的严重级别(blocker、warning、notice)和参数都可以通过 YAML 配置文件覆盖,使用 --config 指定。
支持 TiDB 吗?
支持。使用 --dialect tidb 切换到 TiDB 解析和规则。CLI、CI、HTTP、MCP 都同时支持 MySQL 和 TiDB。
和 pt-online-schema-change 或 gh-ost 有什么区别?
那些工具是在线执行表结构变更。DeltaScope 不执行任何 SQL,它在执行前检查 SQL 文本的风险模式,与在线 DDL 工具互补。