Schema 对比
对比两个数据库的结构差异,生成可审查的同步 SQL。
Schema 对比用于检查两个数据库环境之间的结构差异,例如开发库和生产库、测试库和预发库,或迁移前后的数据库。
Schema 同步可能包含删除表、删除字段、修改字段类型等破坏性操作。生成 SQL 后请逐条审查,生产环境建议先备份。
适合的场景
- 检查开发环境中的结构变更是否已经同步到生产
- 对齐 staging、QA、production 等多套环境
- 生成迁移脚本,交给团队审查后执行
- 对比两个版本数据库之间的表、字段、索引差异
使用流程
选择源库
源库通常是你认为“结构较新”或“结构正确”的数据库。
选择目标库
目标库是需要被检查或同步的数据库。它可以和源库位于不同服务器,也可以是不同数据库引擎。
执行对比
DBX 会读取两边的表、字段和索引元数据,并计算差异。当前对比只处理表,不包含视图。
审查差异
重点检查缺失表、额外表、字段类型变化、是否允许 NULL、默认值变化、索引增删和可能的数据风险。
生成同步 SQL
根据差异生成 CREATE TABLE、ALTER TABLE、DROP TABLE 等语句。确认后再决定是否执行。
差异类型
| 类型 | 含义 |
|---|---|
| 仅源库存在 | 目标库缺少该对象,通常需要创建 |
| 仅目标库存在 | 目标库多出该对象,删除前需要确认是否仍被使用 |
| 字段差异 | 字段类型、是否允许 NULL 或默认值不同 |
| 索引差异 | 按索引名称检查新增或删除的索引 |
当前 Schema 对比不完整覆盖外键、触发器、视图定义、字段注释,也不会检测同名索引的列或唯一性变化。重要迁移仍建议人工审查生成的 SQL。
数据库覆盖范围
Schema 对比依赖表、字段和索引元数据。它更适合 MySQL、PostgreSQL、SQLite、SQL Server、Oracle、Redshift、DM、GaussDB 系等可以稳定读取关系结构的数据库。Redis、MongoDB、Elasticsearch 的数据模型不同,不适合作为关系型 Schema 同步目标。
执行前检查
同步前建议确认:
- 当前连接颜色和环境名称是否正确
- 目标库是否已经备份
DROP、TRUNCATE、字段类型变更是否符合预期- 是否需要在业务低峰期执行
- 是否需要先在测试环境验证生成的 SQL