结构对比

最近更新时间:2024-12-02 10:05:34

我的收藏
当需要对不同的数据库实例进行库级别、表或视图的字段、索引、备注和顺序进行对比时,可通过创建对比任务,选择对比实例、对比类型和对比对象,查看对比结果,可视化完成实例结构对比,帮助您分析和控制数据库结构的变化,从而保证数据库系统的高效运行、合规性和可靠性。
结构对比还支持查看对比任务列表,查看对比任务详情,开始、重新开始、复制、终止、删除、下载对比任务列表等操作。

结构对比类型和对比模式介绍

对比对象支持选择库、表和视图,不同的对比类型支持的对比对象不同。对比类型与对比模式可进行自由组合,请根据实际需求进行选择。

对比类型

对比类型
对比对象
自由对比
表或视图之间进行对比。
库级别对比
只根据库中,同名表的字段进行对比。

对比模式

对比模式
说明
简易模式
只对比字段名称、类型、索引、默认值,顺序和备注不在对比范围内。
严格模式
全量字段、索引、备注、顺序皆对比。

实现逻辑


1. 首先选择要对比的源和目标实例,及对比模式(简易模式或严格模式)、对比类型(自由对比、库级别对比)和对比对象。
2. 启动对比任务后,DMC 会对任务中选择的源实例和目标实例依次进行连通性(账号密码、安全组)和高级权限检查。
3. 检查成功后,通过 show create table db_name.table_name 获取对比对象的表结构,并根据用户选择的对比模式、对比类型和对比对象执行结构对比任务。执行对比任务时,源实例和目标实例分别最大支持开启10个会话。
4. 生成对比结果,即对比结构是否一致。
5. 当对比结果不一致时,可选择生成变更 SQL。生成变更 SQL 时,会读取执行结构对比任务时已保存的表结构快照,并通过内部逻辑生成变更 SQL。

影响说明

由于单个对比任务会分别对源实例和目标实例最大会开启10个会话,为了减少对用户实例的影响,请尽量选择在低负载时执行对比任务,同时,建议不要同时对一个实例开启多个对比任务。
执行结构对比任务过程中获取表结构时建立的会话连接超时时间为3s,不会长时间占用用户实例的连接数量,执行结构对比任务其他操作及生成变更 SQL 过程均在 DMC 侧完成,不会增加用户实例侧的资源负载。
结构对比功能不会读取和修改任何用户保存在数据库中的数据。

使用限制

仅当源实例和目标实例的表字段数量小于500时支持生成变更 SQL 操作。
生成变更 SQL 针对的是启动任务时获取的表结构快照,非实时获取。
生成变更 SQL 时,无法感知列的重命名过程,如果有重命名的列请仔细核对。

前提条件

待对比的实例已添加至数据源中,具体操作请参见 创建数据源
若对比的实例是管控模式,仅支持对您有权限的库表进行对比。若需要对比更多库表,请先申请权限,具体操作请参见 权限申请

创建结构对比任务

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在页面上方单击创建结构对比
4. 选择目标。
参数
说明
任务名称
输入对比任务名称。
仅支持长度小于 60 的数字、英文大小写字母、中文以及_ - . / ( ) [ ]特殊字符。
源实例
选择源实例名称,即数据源名称及 ID。
目标实例
选择一个或两个目标实例名称,即数据源名称及 ID。
对比模式
选择对比模式,支持简易模式和严格模式。
简易模式:只对比字段名称、类型、索引、默认值,顺序和备注不在对比范围内。
严格模式:全量字段、索引、备注、顺序皆对比。
5. 单击下一步,进行对比配置。

5.1 选择对比类型。支持自由对比和库级别对比。
自由对比:表或视图之间进行对比。
库级别对比:只根据库中,同名表的字段进行对比。
5.2 单击添加,在弹出的对话框中分别选择源实例和目标实例中需要对比的表或视图,选择完成后单击添加对比对象,可添加多对对比对象,添加完成后单击确定
自由对比选择对比对象

库级别对比选择对比对象

5.3 单击立即创建。即可完成对比任务的创建。

6. 进入预检查阶段,单击开始对比
说明:
创建对比任务后,若不想即刻开始对比,可后续在对比任务列表的操作列单击开始对比,启动预检查和对比任务。
开始对比后,先检查实例状态和信息,检查通过后自动执行对比任务,若检查不通过则提示检查失败的实例及失败原因。失败原因包括但不限于实例不存在、实例用户名或密码错误、无实例或数据库的操作权限、不是高权限用户等。

7. 查看预检查结果。
预检查通过:自动执行对比任务。

单击查看详情,进入对比任务详情页面。
单击查看列表,进入结构对比任务列表。
预检查不通过:可根据提示的失败原因修改后重新开始对比任务。

支持返回上一步配置页面或重新对比。

查看对比任务列表

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在页面右上方选择时间范围,支持今天、昨天、近7天、近30天和自定义时间段。
4. (可选)可通过资源属性过滤查询对比任务。
5. 查看对比任务列表。列表参数说明如下表所示。

参数
说明
任务 ID/名称
结构对比任务的 ID 及名称。
单击任务 ID 可进入任务详情页面。
对比类型
支持自由对比和库级别对比。
自由对比:表或视图之间进行对比。
库级别对比:根据库中所有表和视图的字段进行对比。
对比模式
支持简易模式和严格模式。
简易模式:只对比字段名称、类型、索引、默认值,顺序和备注不在对比范围内。
严格模式:全量字段、索引、备注、顺序皆对比。
源实例
对比任务选择的源实例 ID 及名称。
目标实例
对比任务选择的目标实例 ID 及名称。
发起人
创建对比任务的用户名。
创建时间
对比任务的创建时间。
状态
对比任务状态。包括待开始、检查中、检查完成、待执行、执行中、已终止、执行失败、已完成。
操作
查看对比详情:单击查看,进入对比任务详情页面,具体说明及操作请参见 查看对比任务详情
开始对比:单击开始对比,即刻启动预检查和对比任务,具体操作请参见 开始对比任务
重新对比:单击重新对比,重新启动预检查和对比任务,具体操作请参见 重新对比任务
复制对比任务:单击更多 > 复制任务,具体操作请参见 复制对比任务
终止对比任务:单击更多 > 终止,具体操作请参见 终止对比任务
删除对比任务:单击更多 > 删除,具体操作请参见 删除对比任务

查看对比任务详情

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在待查看对比任务对应的操作列单击查看或单击任务 ID。
4. 查看任务详情。
自由对比示例



库级别对比示例



基本信息
可查看任务 ID、任务名称、对比类型、对比模式、发起人、状态、对比结果、创建时间、结束时间等。
对比详情
可查看源实例和目标实例名称、对比类型、对比结果、任务状态。在操作列单击查看,查看对比详情和生成变更 SQL。



查看详细的对比结果
在右侧弹框可查看详细的对比结果。
生成变更 SQL
在页面上方单击生成变更 SQL,将生成将任务中的目标表变更为与源表 SQL 完全一样的 SQL 语句。



说明:
变更 SQL 仅供参考,在实际应用时请注意核对。已知限制包括:
目前无法感知列重命名的过程,如果有重命名的列请仔细核对,删除相关的 DROP/ADD 语句。
目前针对部分场景无法生成最优的变更 SQL,请对生成结果进行仔细检查。
在页面上方单击重新对比,可重新执行状态为已完成、检查失败、执行失败、已终止的对比任务。
在页面上方单击复制任务,可复制当前任务配置的参数信息,可修改参数配置信息后,创建一个新的对比任务。
在页面上方单击终止,可终止状态为执行中、待执行的对比任务。

开始对比任务

若当创建对比任务后未即刻开始对比,当前需要开始对比,可根据如下步骤进行操作。对比任务的状态为待开始时,支持开始对比操作。
1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在对比任务对应的操作列单击开始对比,启动预检查和对比任务。
同时,支持在对比任务对应的操作列单击查看或单击任务 ID,在对比任务详情页面单击开始对比
4. 在对比任务的操作列单击查看,查看对比任务状态和对比详情。

重新对比任务

支持重新对比状态为已完成、执行失败、检查失败、已终止的对比任务。
1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在对比任务对应的操作列单击重新对比,启动预检查和对比任务。
同时,支持在对比任务对应的操作列单击查看或单击任务 ID,在对比任务详情页面单击重新对比
4. 在对比任务的操作列单击查看,查看对比任务状态和对比详情。

复制对比任务

支持通过复制对比任务,基于已有对比任务的配置参数进行修改创建一个新的对比任务。
1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在对比任务对应的操作列单击复制任务
同时,支持在对比任务对应的操作列单击查看或单击任务 ID,在对比任务详情页面单击复制任务
4. 基于已有配置参数,修改选择目标、对比配置,修改完成后单击立即创建
5. 若需要立即开始对比,请单击开始对比,启动预检查和对比任务。若需要后续开始对比任务,请参见 开始对比任务

终止对比任务

支持终止状态为执行中、待执行的对比任务。
1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在待终止对比任务对应的操作列单击更多 > 终止

同时,支持在对比任务对应的操作列单击查看或单击任务 ID,在对比任务详情页面单击终止
4. 在弹出的对话框中,单击确定

删除对比任务

支持删除状态为待开始、检查中、检查完成、已终止、执行失败、已完成的对比任务。
1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在待删除对比任务对应的操作列单击更多 > 删除
4. 在弹出的对话框中,单击确定

下载对比任务列表

1. 登录 DMC 控制台
2. 在左侧导航栏,选择高阶开发 > 结构对比
3. 在对比任务列表上方单击

,下载格式为.csv 的文件。