文档/ 工具中心 · 结构工具/ 结构对比与变更管理
工具中心 · 结构工具

结构对比与变更管理

从对象范围确认、结构差异识别到 DDL 脚本审阅与变更留痕,建立可复核的数据库结构交付流程。

重要边界:结构对比生成的是待审阅的同步建议,不等于可直接执行的跨方言迁移方案。执行 DDL 前应核对目标库方言、依赖对象、锁表影响与回滚路径;异构数据库之间不应假定能够无损自动转换。

适用场景

结构工具适合把“开发库改了什么”转换为可检查、可归档的交付材料,也适合在接手陌生数据库时快速形成对象清单。常见场景包括:

  • 发布前核对:比较开发、测试或预发环境,定位新增表、缺失字段、字段类型、默认值、索引和外键差异。
  • 变更追踪:按数据源、数据库和时间范围回看经 MagicDB Studio 成功执行的 DDL,辅助定位结构变化发生的时间与语句。
  • 结构交付:导出包含所需对象的 DDL 文件,交由 DBA 或发布流程审阅、执行和归档。
  • 文档治理:生成 HTML 或 Markdown 数据字典,核对表、字段、类型、可空性、默认值和注释。
  • 异构评估:在 MySQL、PostgreSQL 等不同数据库之间先识别类型、标识符、默认表达式和对象能力差异,再人工确定迁移策略。
结构差异与同步脚本上下文
数据同步面板中的源库、目标库结构差异与同步脚本预览
数据同步面板展示源库与目标库的结构差异及待执行脚本;结构管理时应先逐项确认差异,再把脚本送入审阅和发布流程。

入口路径

从顶部菜单进入「工具中心」,切换到「结构工具」分类,再根据任务选择对应功能:

  • 结构对比:选择源数据源与目标数据源,进入差异检查和同步 DDL 生成流程。
  • 结构变更追踪:进入独立页面,按数据源、数据库与日期范围筛选已记录的成功 DDL。
  • DDL 导出:选择数据源和数据库后,配置要纳入脚本的结构对象。
  • 数据字典:扫描数据库元数据并选择 HTML 或 Markdown 作为归档格式。

如果尚未建立连接,请先在数据源管理中配置并验证连接;对象树可用于确认当前连接、数据库、模式与表的实际范围,避免比较或导出错库。

数据库工作台 · 对象树
数据库工作台中展开的数据源、数据库、表和结构对象树
数据库工作台对象树用于确认连接、数据库与对象层级;开始结构对比、DDL 导出或数据字典生成前,应以这里显示的实际对象范围进行复核。

前置条件

  • 源端和目标端连接均已创建且连接测试通过;账号至少具备读取系统目录和对象元数据的权限。
  • 已明确比较范围,包括数据库、schema、表、视图、索引、外键以及是否涉及存储过程或触发器。
  • 已确认哪一端是结构基准。源端与目标端选反会导致生成方向相反的 DDL。
  • 执行任何写入型 DDL 前,已完成目标环境备份或快照,并准备可验证的回滚方案;生产环境还应遵循现有变更窗口和审批要求。
  • 异构数据库场景已列出方言差异,特别检查字段类型、大小写规则、关键字、序列或自增、默认值表达式、索引能力和存储过程语法。
记录范围说明:结构变更追踪用于查看经 MagicDB Studio 成功执行并被记录的 DDL。若变更由其他客户端、命令行或外部发布系统执行,不应仅凭此页面判断数据库没有发生变化。

编号步骤

  1. 确定基准与目标。记录源连接、源数据库、目标连接和目标数据库,确认环境标签与业务用途;不要只依据相似的库名判断方向。
  2. 缩小对象范围。在对象树和结构工具中筛选本次变更涉及的表及相关对象。检查被排除对象,尤其是依赖表、外键引用、视图、索引、触发器和存储过程。
  3. 运行结构对比。查看表新增或缺失、字段定义、默认值、索引与外键差异。对疑似噪声逐项核查,例如大小写、隐式长度、字符集或数据库默认行为造成的显示差异。
  4. 生成并审阅 DDL。先预览同步脚本,不直接执行。检查对象限定名、标识符引用、语句顺序、数据类型、默认表达式以及 DROP、列缩窄、非空约束等高风险语句。
  5. 在隔离环境验证。将审阅后的脚本先应用于测试库或可恢复副本,验证语法、依赖顺序、执行耗时和锁影响;执行前再次备份,执行后重新对比结构。
  6. 留存结果。按需导出 DDL 和数据字典,并在结构变更追踪中核对通过 MagicDB Studio 执行的成功语句。将差异报告、审阅后的脚本、验证结果和回滚说明一并归档。

参数说明

参数或选项用途检查重点
源数据源 / 源数据库作为结构基准,用于生成目标端所需的变更方向。核对环境、数据库名、schema 与账号权限,避免把目标端误当基准。
目标数据源 / 目标数据库承接差异修正的环境。确认不是生产误选;执行前准备备份、维护窗口与回滚脚本。
对象筛选限定参与比较、导出或文档生成的表及相关对象。检查依赖是否完整;排除对象不代表生成脚本会自动补足依赖。
索引与外键控制 DDL 导出是否包含索引、外键等约束。核对创建顺序、引用表是否存在,以及目标引擎支持的索引类型。
视图将视图定义纳入结构脚本。确认底层表、函数和 schema 已先创建,并人工检查目标方言兼容性。
存储过程 / 触发器在支持的关系型数据库中导出过程化对象。不同数据库语法差异明显,必须由熟悉目标数据库的人员审阅。
时间范围筛选结构变更追踪记录。结合数据源与数据库条件使用,并注意外部工具执行的变更可能不在记录内。
数据字典格式选择 HTML 便于浏览,或 Markdown 便于纳入仓库与 Wiki。生成后抽查字段注释、默认值、可空性及敏感业务描述是否适合分发。

预期结果

完成一次结构对比与变更管理流程后,应得到可复核的结果,而不是只得到“执行成功”的提示:

  • 差异清单能够对应到明确的表、字段、索引或外键,并标明源端与目标端。
  • 生成的 DDL 已经过人工审阅,高风险删除、类型缩窄、非空约束和重建对象语句已被单独确认。
  • 脚本已在隔离环境验证;执行后再次对比时,计划内差异消失,计划外对象保持不变。
  • DDL 导出文件包含预期对象,且不意外包含被筛除的对象;脚本能被目标数据库解析并按依赖顺序执行。
  • 数据字典中的表数、字段数和关键注释与对象树抽查结果一致。
  • 经 MagicDB Studio 执行的成功 DDL 可在对应数据源、数据库和时间范围内查到记录。
方言检查:跨数据库引擎时,即使对象名称和业务含义一致,也可能出现类型精度、布尔值、自增机制、引用符号、函数、分区或过程语言不兼容。工具输出应视为迁移输入材料,不能替代目标数据库验证。

常见问题

为什么结构对比显示差异,但业务认为两端定义相同?

先检查数据库默认值是否不同,例如字符集、排序规则、大小写、隐式字段长度、时间精度或默认 schema。再对照两端原始 DDL,确认差异是实际语义变化还是元数据呈现差异;不要为了“清零”而直接执行全部同步语句。

生成的 DDL 可以直接在生产库执行吗?

不建议。先审阅 DROPALTER、列类型缩窄、默认值与非空约束,评估锁表和数据兼容风险;完成备份后在测试库验证,并通过现有审批与发布流程执行。

结构变更追踪没有显示某次已发生的变更,怎么处理?

确认筛选的数据源、数据库与日期范围正确,并核实该 DDL 是否由 MagicDB Studio 成功执行。外部客户端或发布系统执行的语句可能不在该记录中,应结合数据库审计日志、发布记录和当前结构重新核对。

跨数据库导出的脚本为什么在目标库报语法错误?

DDL 导出保留源数据库结构语义,不代表已完成目标方言转换。逐项处理类型、标识符引用、自增或序列、默认函数、索引、分区、视图以及存储过程语法,并在目标数据库的隔离环境中分段验证。

数据字典缺少字段说明怎么办?

先在数据库元数据中确认表和字段本身是否有注释,并检查当前账号能否读取相关系统目录。补充注释后重新生成,再抽查关键表;工具不会凭空推断不存在的业务定义。