TiDB Schema Change 审核

DeltaScope 是一个离线优先的 TiDB Schema Change 审核工具,在 DDL 语句到达 TiDB 集群之前分析其风险。它能发现破坏性的 ALTER TABLE 操作、缺少默认值、不兼容的类型变更等数十种风险模式,适用于 CI 流水线、开发者工作流和 AI Agent 会话。

工作原理

使用 --dialect tidb 传入一条或多条 DDL 语句。DeltaScope 使用 TiDB 兼容语法解析 SQL,评估所有适用规则,返回包含 blocker、warning、notice 的判定结果。离线审核无需数据库连接。

$ deltascope audit --dialect tidb --sql "ALTER TABLE users DROP COLUMN email;"

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

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

常见 TiDB DDL 检查

带元数据的 TiDB Schema Change 审核

连接到 TiDB 实例,使用表统计信息丰富审核结果:

deltascope audit \
  --dialect tidb \
  --sql "alter table users add column email varchar(255)" \
  --host 127.0.0.1 --port 4000 --user root --ask-password --schema app \
  --metadata-connect-timeout 5s

在 CI 中使用

# GitHub Actions 示例
- name: Audit TiDB schema changes
  run: |
    deltascope audit \
      --dialect tidb \
      --file ./migrations/tidb_schema_change.sql \
      --format github-actions \
      --fail-on blocker

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

多种集成方式

从 CLI、CI、HTTP 服务或 MCP Server(面向 AI Agent)使用同一套审核引擎,同一套策略配置。

DeltaScope 不是什么

常见问题

DeltaScope 支持 TiDB 特有语法吗?
支持。使用 --dialect tidb 启用 TiDB 兼容解析。MySQL 和 TiDB 共享同一套规则和集成路径。
需要连接 TiDB 集群吗?
不需要。默认模式是离线优先。它解析 SQL 文本无需任何网络连接。可选的元数据感知模式可以从实例读取表统计信息。
可以自定义规则吗?
可以。每条规则都有可配置的严重级别(blocker、warning、notice)和可选参数。通过 YAML 配置文件和 --config 覆盖。
和 TiDB DM 或 TiCDC 有什么区别?
那些工具处理数据迁移和变更数据捕获。DeltaScope 不执行或复制任何 SQL。它在执行前审核 SQL 文本的风险模式。