工具中心 · 结构工具
结构对比与变更管理
从对象范围确认、结构差异识别到 DDL 脚本审阅与变更留痕,建立可复核的数据库结构交付流程。
重要边界:结构对比生成的是待审阅的同步建议,不等于可直接执行的跨方言迁移方案。执行 DDL 前应核对目标库方言、依赖对象、锁表影响与回滚路径;异构数据库之间不应假定能够无损自动转换。
适用场景
结构工具适合把“开发库改了什么”转换为可检查、可归档的交付材料,也适合在接手陌生数据库时快速形成对象清单。常见场景包括:
- 发布前核对:比较开发、测试或预发环境,定位新增表、缺失字段、字段类型、默认值、索引和外键差异。
- 变更追踪:按数据源、数据库和时间范围回看经 MagicDB Studio 成功执行的 DDL,辅助定位结构变化发生的时间与语句。
- 结构交付:导出包含所需对象的 DDL 文件,交由 DBA 或发布流程审阅、执行和归档。
- 文档治理:生成 HTML 或 Markdown 数据字典,核对表、字段、类型、可空性、默认值和注释。
- 异构评估:在 MySQL、PostgreSQL 等不同数据库之间先识别类型、标识符、默认表达式和对象能力差异,再人工确定迁移策略。
结构差异与同步脚本上下文
入口路径
从顶部菜单进入「工具中心」,切换到「结构工具」分类,再根据任务选择对应功能:
- 结构对比:选择源数据源与目标数据源,进入差异检查和同步 DDL 生成流程。
- 结构变更追踪:进入独立页面,按数据源、数据库与日期范围筛选已记录的成功 DDL。
- DDL 导出:选择数据源和数据库后,配置要纳入脚本的结构对象。
- 数据字典:扫描数据库元数据并选择 HTML 或 Markdown 作为归档格式。
如果尚未建立连接,请先在数据源管理中配置并验证连接;对象树可用于确认当前连接、数据库、模式与表的实际范围,避免比较或导出错库。
数据库工作台 · 对象树
前置条件
- 源端和目标端连接均已创建且连接测试通过;账号至少具备读取系统目录和对象元数据的权限。
- 已明确比较范围,包括数据库、schema、表、视图、索引、外键以及是否涉及存储过程或触发器。
- 已确认哪一端是结构基准。源端与目标端选反会导致生成方向相反的 DDL。
- 执行任何写入型 DDL 前,已完成目标环境备份或快照,并准备可验证的回滚方案;生产环境还应遵循现有变更窗口和审批要求。
- 异构数据库场景已列出方言差异,特别检查字段类型、大小写规则、关键字、序列或自增、默认值表达式、索引能力和存储过程语法。
记录范围说明:结构变更追踪用于查看经 MagicDB Studio 成功执行并被记录的 DDL。若变更由其他客户端、命令行或外部发布系统执行,不应仅凭此页面判断数据库没有发生变化。
编号步骤
- 确定基准与目标。记录源连接、源数据库、目标连接和目标数据库,确认环境标签与业务用途;不要只依据相似的库名判断方向。
- 缩小对象范围。在对象树和结构工具中筛选本次变更涉及的表及相关对象。检查被排除对象,尤其是依赖表、外键引用、视图、索引、触发器和存储过程。
- 运行结构对比。查看表新增或缺失、字段定义、默认值、索引与外键差异。对疑似噪声逐项核查,例如大小写、隐式长度、字符集或数据库默认行为造成的显示差异。
- 生成并审阅 DDL。先预览同步脚本,不直接执行。检查对象限定名、标识符引用、语句顺序、数据类型、默认表达式以及
DROP、列缩窄、非空约束等高风险语句。 - 在隔离环境验证。将审阅后的脚本先应用于测试库或可恢复副本,验证语法、依赖顺序、执行耗时和锁影响;执行前再次备份,执行后重新对比结构。
- 留存结果。按需导出 DDL 和数据字典,并在结构变更追踪中核对通过 MagicDB Studio 执行的成功语句。将差异报告、审阅后的脚本、验证结果和回滚说明一并归档。
参数说明
| 参数或选项 | 用途 | 检查重点 |
|---|---|---|
| 源数据源 / 源数据库 | 作为结构基准,用于生成目标端所需的变更方向。 | 核对环境、数据库名、schema 与账号权限,避免把目标端误当基准。 |
| 目标数据源 / 目标数据库 | 承接差异修正的环境。 | 确认不是生产误选;执行前准备备份、维护窗口与回滚脚本。 |
| 对象筛选 | 限定参与比较、导出或文档生成的表及相关对象。 | 检查依赖是否完整;排除对象不代表生成脚本会自动补足依赖。 |
| 索引与外键 | 控制 DDL 导出是否包含索引、外键等约束。 | 核对创建顺序、引用表是否存在,以及目标引擎支持的索引类型。 |
| 视图 | 将视图定义纳入结构脚本。 | 确认底层表、函数和 schema 已先创建,并人工检查目标方言兼容性。 |
| 存储过程 / 触发器 | 在支持的关系型数据库中导出过程化对象。 | 不同数据库语法差异明显,必须由熟悉目标数据库的人员审阅。 |
| 时间范围 | 筛选结构变更追踪记录。 | 结合数据源与数据库条件使用,并注意外部工具执行的变更可能不在记录内。 |
| 数据字典格式 | 选择 HTML 便于浏览,或 Markdown 便于纳入仓库与 Wiki。 | 生成后抽查字段注释、默认值、可空性及敏感业务描述是否适合分发。 |
预期结果
完成一次结构对比与变更管理流程后,应得到可复核的结果,而不是只得到“执行成功”的提示:
- 差异清单能够对应到明确的表、字段、索引或外键,并标明源端与目标端。
- 生成的 DDL 已经过人工审阅,高风险删除、类型缩窄、非空约束和重建对象语句已被单独确认。
- 脚本已在隔离环境验证;执行后再次对比时,计划内差异消失,计划外对象保持不变。
- DDL 导出文件包含预期对象,且不意外包含被筛除的对象;脚本能被目标数据库解析并按依赖顺序执行。
- 数据字典中的表数、字段数和关键注释与对象树抽查结果一致。
- 经 MagicDB Studio 执行的成功 DDL 可在对应数据源、数据库和时间范围内查到记录。
方言检查:跨数据库引擎时,即使对象名称和业务含义一致,也可能出现类型精度、布尔值、自增机制、引用符号、函数、分区或过程语言不兼容。工具输出应视为迁移输入材料,不能替代目标数据库验证。
常见问题
为什么结构对比显示差异,但业务认为两端定义相同?
先检查数据库默认值是否不同,例如字符集、排序规则、大小写、隐式字段长度、时间精度或默认 schema。再对照两端原始 DDL,确认差异是实际语义变化还是元数据呈现差异;不要为了“清零”而直接执行全部同步语句。
生成的 DDL 可以直接在生产库执行吗?
不建议。先审阅 DROP、ALTER、列类型缩窄、默认值与非空约束,评估锁表和数据兼容风险;完成备份后在测试库验证,并通过现有审批与发布流程执行。
结构变更追踪没有显示某次已发生的变更,怎么处理?
确认筛选的数据源、数据库与日期范围正确,并核实该 DDL 是否由 MagicDB Studio 成功执行。外部客户端或发布系统执行的语句可能不在该记录中,应结合数据库审计日志、发布记录和当前结构重新核对。
跨数据库导出的脚本为什么在目标库报语法错误?
DDL 导出保留源数据库结构语义,不代表已完成目标方言转换。逐项处理类型、标识符引用、自增或序列、默认函数、索引、分区、视图以及存储过程语法,并在目标数据库的隔离环境中分段验证。
数据字典缺少字段说明怎么办?
先在数据库元数据中确认表和字段本身是否有注释,并检查当前账号能否读取相关系统目录。补充注释后重新生成,再抽查关键表;工具不会凭空推断不存在的业务定义。
MagicDB Studio