#迁移评估

# 前提条件

  1. 数据源已添加完成。

# 创建任务

创建任务是一切迁移评估任务的起点,点击任务列表右上边的创建任务会跳转至任务创建界面,页面如下图:

创建评估任务1.png

创建评估任务2.png

创建任务所需信息:

  • 任务名称:唯一,不可重复,最大128字符长度,冲突则会提示,不允许出现空格。
  • 源端数据库:数据源所添加的源端数据库,需要保证数据库用户具有迁移平台所需权限(所需权限详见:数据源权限配置)。
  • 是否评估:可选项,可选择跳过评估步骤。该选项选择“否”时,迁移评估页面不展示,迁移配置可迁移范围只展示表对象,查看DDL不展示,适用于只做数据迁移的情况。 注意:一但点击下一步离开创建任务页面,则再返回无法更改该选项,请谨慎操作。
  • 选择评估库,是否使用内置库:可选项,是则使用本项目内置库作为评估库,若表默认类型为LSC,YMP将自动在system和user表空间下挂载DATABUCKET。 否则在选择框中选择数据源添加的YashanDB类型的数据库作为评估库。同样要求数据库用户具有DBA权限。
  • 选择评估对象:评估对象至少选择一项,可多选。
    • Oracle支持评估对象类型:表、约束、索引、视图、序列、物化视图、同义词、触发器、自定义类型、自定义函数、包、存储过程。
    • MySQL支持评估对象类型:表、约束、索引、视图、触发器、自定义函数、存储过程、Event。
    • DM8支持评估对象类型:序列、表、约束、索引、视图、物化视图、自定义类型、触发器、同义词、存储过程、函数、包。
  • 选择评估范围:下方列表会展示源端数据库的schema名称,可以选择需要进行评估迁移的schema列表,可多选。
    注意
    • 系统schema已经被过滤,无法选择,且如果选中的schema与YashanDB系统schema同名,则也无法保存任务或进行下一步。
    • MySQL系统schema主要有4个:information_schema,mysql,performance_schema,sys。
    • Oracle11系统schema参考配置文件application.yml中的schemaBlackList.oracle。
    • Oracle12、19、21版本在11的过滤基础上再次根据系统视图查询结果进行过滤,查询SQL为sql SELECT username FROM dba_users WHERE ORACLE_MAINTAINED = 'N';
    • YashanDB系统schema主要来自系统视图的查询结果,SQL为sql SELECT username FROM dba_users WHERE DATABASE_MAINTAINED= 'N';
    • DM8系统schema主要有4个:SYS,SYSDBA,SYSSSO,SYSAUDITOR。
  • 是否校验失效对象:选择项,默认是,会评估源端数据库当前状态为invalid状态的对象,选择否则不会评估invalid状态的对象。
  • 是否忽略nologging:选择项,默认是,在进行迁移评估时会去除表和索引的nologging关键字,选择否则不做处理。
    • YashanDB的表和索引如果NOLOGGING状态没有保持统一,则在评估或者迁移的时候会失败,且修改方案均为剔除NOLOGGING关键字,因此用户可以选择是否自动过滤NOLOGGING。
  • 评估库部署模式:选择项,默认单机,可选集群,集群模式下带有子分区的表与物化视图将默认评估不兼容。
  • 手动DDL保留策略:
    • 全保留:手动改过的DDL都会保留。
    • 仅保留未变更:只保留源端DDL没有发生变化的手动修改过的DDL。
    • 不保留:手动改过的DDL全不保留。

Note:

如果评估库不是内置库,且评估库存在与评估任务选择的schema列表中同名的schema,并且这些schema不是YMP评估任务创建的,则会提示用户是否覆盖。 保存操作会对当前填写的任务信息进行暂存,任务列表会保留该任务信息,此时任务状态为评估编辑中,如果点击下一步:开始迁移评估,此时任务状态为评估中。 Mysql的Event可与同Database下其他对象同名,YashanDB不支持。非同名Event目前兼容率为100%,但是其中对应的YashanDB的Job的PLSQL可能会在该Job执行时失败,因此仍需要用户确认DDL是否符合预期。

# 开始评估

开始迁移评估页面效果如下图所示:

评估任务运行中.png 评估任务运行情况.png

该页面主要分为4部分:

基础信息

  • 展示任务的基础信息,任务名称和所使用的数据库信息。

评估进度

  • 展示当前评估过程中任务的总体进度和选择评估的数据类型的进度信息。
  • 评估过程中衍生对象只有总数变更,进度信息无变化。
  • 刷新报告过程中衍生对象总数不变,进度实时刷新。

运行情况

  • 展示当前评估过程中的任务日志进度信息,可以进行搜索、滑动查看历史等操作。
  • 搜索:输入对象名称可搜索该对象的评估日志信息。
  • 滑动:可以查看之前的日志信息。
  • 最新日志:右下角会展示最新日志信息,点击可跳转至最新的日志处继续自动滚动展示。

终止评估

  • 点击该按钮会终止当前的评估任务,且页面会刷新,任务状态变更为评估终止。
  • 当前任务状态会保存,任务列表处该任务状态也会同步更新,终止后可以重新评估。

# 评估失败

如果任务未能正常结束,任务状态会自动变更为评估失败状态,且页面信息会保存当前状态,此时运行情况最后面会展示失败原因。

# 评估完成

评估报告.png 对象详情列表.png

评估完成会自动跳转至评估完成页面,页面主要包含以下几个模块:

  • 基础信息:展示任务的基础信息,任务名称和所使用的数据库信息,评估时间信息。
  • 总体情况:展示该任务对象的兼容度统计信息,PL/SQL的代码兼容度统计信息,不兼容类型的统计信息。 迁移数据量和迁移时间的统计信息。
  • 整体对象分布:根据对象类型对所有对象进行分类统计,分别统计不同兼容类型的对象个数和兼容比例。
  • schema摘要:按照schema和对象类型对评估结果进行分类统计,展示每个schema下不同对象类型的兼容个数和比例。 并对schema进行数据量和迁移时间进行统计。
  • 对象详情:展示所有对象的评估结果信息,包含对象类型、对象名称、关联表、schema名称、衍生对象、源端DDL变更、评估结果、对象状态、不兼容类型、是否检查、编辑状态、是否忽略、DDL等信息。如果评估源端数据库类型为MySQL,则没有对象状态列。 对象详情可以对对象信息进行分页条件筛选,对象名称为左上角框模糊匹配,该搜索为大小写模糊,对象类型、schema名称、评估结果、对象状态、不兼容类型、是否检查、编辑状态、是否忽略均为下拉选择框,可多选和不选,可以任意组合筛选条件对结果进行过滤操作。 部分类型的对象可以衍生出其它类型的对象,目前有MySQL和Oracle的自增列衍生序列、MySQL的列默认值default on update衍生触发器。 该页面主要功能如下:

# 预览/下载

可以对当前页面的报告信息进行离线展示和下载。

# 刷新报告

  • 对象详情处如果有对象DDL的修改或编辑则会更新任务基础信息的最近修改时间,提示刷新报告。
  • 刷新报告会将所有未忽略对象进行重新评估,此时任务状态为评估刷新中。
  • 刷新完成后最近评估时间会变更。
  • 同一时间只允许一个刷新报告操作。
  • 刷新报告会更新当前任务报告的总体情况和整体对象分布和schema摘要的统计信息。
  • 刷新过程中可以终止刷新,任务状态会变为刷新失败。

# 筛选对象

  • 可以输入对象名模糊筛选对象,还可以筛选出关联表等于该名称的约束和索引。
  • 对象类型、schema名称、衍生对象、源端DDL变更、评估结果、对象状态、不兼容类型、是否检查、编辑状态、是否忽略支持下拉筛选。

# 刷新源端状态

此功能只提供给Oracle数据源,会刷新所有对象的状态,与源端数据库保持一致,VALID 、INVALID、 --,其中--为部分没有状态的对象使用。

# 批量下载DDL

  • 点击该按钮会根据当前筛选条件对满足筛选结果的所有对象的DDL进行下载。
  • 下载结果为zip压缩包。
  • zip压缩包中会根据对象所属schema和所属类型进去文件夹区分,会对源端、首次评估目标端和当前目标端语句进行文件区分。
  • 存储过程和包会每个对象写入一个文件中,其余对象类型会所有对象按照区分写入一个文件中。

# 批量设置是否忽略

  • 点击该按钮会根据当前筛选条件对满足筛选结果的所有对象的DDL进行是否忽略操作。
  • 忽略会变更满足筛选结果的对象的是否忽略状态为忽略,且刷新报告时不会再评估这些对象。
  • 不忽略会变更满足筛选结果的对象的是否忽略状态为不忽略,且刷新报告时会评估这些对象。

# 查看DDL

  • 弹框显示源端DDL、目标端DDL和错误信息。
  • 可对目标端DDL进行修改后进行操作。
  • 仅保存会对修改后的DDL进行保存。
  • 验证并保存会对修改后的DDL在评估的验证库中进行执行,执行结果会展示在上方。
  • 重置会将目标端DDL恢复至首次评估后的DDL语句。
  • 复制会将DDL复制至粘贴板。
  • 可对检查后的DDL标记为已检查状态

# 忽略

修改当前对象的忽略状态,作用效果与当前筛选结果是否忽略相同。

# 批量修改

# 文本替换

  • 用户可以选择要修改的对象,对对象的目标端DDL进行规则修改。
  • 批量修改规则最多允许存在20条。
  • 选中的规则会从上到下依次执行,对目标端DDL进行匹配替换。
  • 规则列表左侧为正则表达式,右侧为用于替换的新字符串。
  • 修改对象后如果没有验证,查看DDL处会有红点标识其未验证。
  • 该操作要求强制刷新报告。

# 序列起始值修改

  • 用户可以选择要修改的序列对象,对序列的目标端DDL的序列起始值进行修改。
  • 用户可以设置序列起始值的增加量,对原本序列起始值的基础上进行增加。
  • 序列起始值的增加量范围大于等于0,修改后的序列起始值不能大于上限(9999999999999999999999999999)。
  • 该操作要求强制刷新报告。

# 批量reset

  • 用户可以选择要修改的对象,对对象的目标端DDL进行批量重置。
  • 重置的对象DDL会恢复至首次评估完成后的样式。
  • 对象会标识未验证。
  • 该操作要求强制刷新报告。

# 全选

选择对象时如果勾选了全选所有按钮,会选择该列表查询出的所有的对象。

# reset

  • 会将单条对象的DDL恢复至首次评估完成后的样式。
  • 对象会标识未验证。
  • 该操作要求强制刷新报告。

Note:

忽略和DDL的操作均会导致对象修改时间变更,且当对象修改时间晚于最近评估时间时会提示刷新报告。

# 其它

评估导航栏.png

  • 可以点击上方(1)任务创建和(2)迁移评估进行页面跳转

    • 点击(1)跳转至任务创建页面,展示当前任务的配置信息。
    • 评估完成后,切换创建页面并且点击下一步迁移评估,则会对该任务进行重新评估,重新评估会覆盖之前该任务的所有数据。
  • 下一步:迁移配置:只有当报告为最新无需刷新且对象兼容率已达100%才可以进行下一步操作。

    • 如果不满足前置条件,点击下一步会进行弹框提示,提示用户需要进行相应的操作。
    • 如果满足前置条件,点击下一步会跳转至迁移配置页面。