步骤三:迁移验证
前提条件
存在已经完成迁移的项目。
操作步骤
- 登录UGO控制台。
- 单击左侧导航栏,显示迁移项目列表。
- 单击待迁移项目的“操作 > 迁移”,进入迁移项目,选择“迁移验证”页签。 图1 迁移任务
- 进入“迁移任务”页面,单击“迁移验证配置”,弹出“迁移验证配置”页面: 图2 迁移验证配置
- 转换失败对象是否迁移:
- 不勾选:默认“不勾选”“迁移转换失败对象”,转换失败对象不参与迁移任务。
- 勾选:“勾选”“迁移转换失败对象”,转换失败对象参与迁移任务。
- 用户连接:
- 默认“勾选”“将数据库连接用户设置为执行GaussDB脚本的用户”,因此各个schema的owner为数据库连接用户。若“勾选”“将对象所有者设置为执行GaussDB脚本的用户”,则各个schema的owner为schema自己。
- 修改用户密码:
- 当待转换对象中包含USER对象时,需要为用户设置统一的密码,设置的密码将用于目标数据库上创建所有用户对象,迁移后需要逐一手动修改用户的密码。
- 密码创建完成后,在迁移过程中不支持再次修改。
- 当源库为 PostgreSQL 和 openGauss 时,USER 对象只是 ROLE 对象的一种特例。上述语境中的 USER 对象,实际指代 ROLE 对象。即如果要转换 ROLE 对象,也需要设置用户密码。
- 仅支持在“待启动”、“暂停”和“迁移完成”三个状态下进行设置。
- 当待转换对象中包含USER对象时,需要为用户设置统一的密码,设置的密码将用于目标数据库上创建所有用户对象,迁移后需要逐一手动修改用户的密码。
- 转换失败对象是否迁移:
- 单击“启动”开始进行迁移验证,开始将对象迁移至目标数据库中。
- 迁移成功:进入页面,“迁移状态”标记为“成功”,可登录目标库查看迁移对象。
- 迁移失败:进入页面,“迁移状态”标记为“失败”,单击失败对象后的“对象校正”,跳转“基本信息”页面,查看该类对象的具体迁移情况,也可单击修改并直接进行迁移验证,具体参考5,重新进行单条对象的手工修改并迁移验证。
- 查看空存储过程:当源库为Oracle时,可查看失败的对象列表和失败次数。
- 迁移完成后,单击“迁移报告”,弹出“迁移报告”页面: 图3 迁移报告
- “最近一次迁移报告”页面,显示最近一次迁移项目的详细信息,包括对象类型、总数、迁移成功、迁移失败、剩余量等信息。当在“迁移验证配置”中设置了不迁移转换失败对象时,还会展示“转换失败不迁移”,以及迁移成功率等信息。
- “迁移历史”页面,以倒序方式显示迁移历史记录,包括序号、总数、迁移成功、迁移失败、迁移状态、开始时间、结束时间,可以单击“操作>详情”查看详细信息。
- 单击“详情”,显示对象类型、总数、迁移成功、迁移失败等信息。可以查看各对象类型的详细信息。
- 单击对象类型后的“详情”,显示Schema、对象名称、对象类型、迁移状态等信息。可以依据具体对象名称搜索,也可以查看各Schema的详细信息。
- 单击对象后的“详情”,显示目标库详细代码信息以及迁移报错信息。
- 单击“下载报告”,选择所需报告单击“下载”,下载至本地供用户分析。子对象的相关数据不会统计在迁移报告中。
- 迁移统计报告:该报告简要介绍了迁移和验证对象的状态。
- 迁移错误报告:该报告介绍了对象迁移失败的详情,包括每个对象的状态、迁移语句和错误信息。
- 迁移错误报告(匿名化):该报告介绍了对象迁移失败的详情,包括每个对象的状态、迁移语句、错误信息,但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。
- 迁移全量报告:该报告介绍了对象迁移的详情,包括每个对象的状态、迁移语句和错误信息。
- 迁移全量报告(匿名化):该报告介绍了对象迁移的详情,包括每个对象的状态、迁移语句和错误信息。但源库SQL语句和迁移后的SQL语句均以匿名的形式呈现。
- 迁移失败对象全部修改完并迁移到目标数据库,迁移任务完成。
批量语句更新
- 登录UGO控制台。
- 单击左侧导航栏,显示迁移项目列表。
- 单击待迁移项目的“操作 > 迁移 ”,进入迁移项目,选择“迁移验证”页签,进入页面。
- 单击“批量语句更新”,进入批量修改页面。 图4 批量语句更新
- 单击“搜索结果”页签右侧操作列“查看详情”,进入对象详细信息页面。
显示 Schema 名称、对象类型、对象名称、拆分对象名称、转换状态和迁移状态。
- 可查看转换或迁移报错信息。若有修改建议,也同时展示。
- “转换状态”为“失败”时,显示“转换错误”。
- “迁移状态”为“失败”时,显示“迁移错误”。
- 选定待修改 SQL 关键词或错误字符串后,返回“批量修改”页面,将信息填入对应的位置。 图6 批量修改
表1 批量搜索关键词参数说明 参数
是否必选
说明
搜索模式
是
- 正常:简单搜索文本类型。
- 正则表达式:正则表达式搜索文本类型。 说明:
- 正则表达式的错误使用可能会对 SQL 进行不可预知的更改,请慎用。
错误字符串
否
可对“查看详情”中“转换/迁移错误”提示信息的内容进行搜索。
- 多个“错误字符串”之间是“与”的关系。
- “错误字符串”最大输入长度为 255 个字符。
语句更新规则
是
对象 SQL 中的内容匹配和替换的规则。
- 多个“SQL 关键词”之间是“或”的关系。
- “SQL 关键词”最大输入长度为60个字符,“替换为”最大输入长度为 255 个字符。
说明:例如:选择“正常”搜索模式创建两条语句更新规则。第一条规则在“SQL 关键词”和“替换为”分别输入“CREATE TABLE”和“CREATE TABLE IF NOT EXISTS”,第二条规则分别输入“CREATE VIEW”和“CREATE VIEW IF NOT EXISTS”。在搜索时,UGO 会在目标 SQL 语句中查找包含“CREATE TABLE”或“CREATE VIEW”的语句;在替换时,UGO 将先把“CREATE TABLE”替换为“CREATE TABLE IF NOT EXISTS”,再将“CREATE VIEW”替换为“CREATE VIEW IF NOT EXISTS”
支持两种方式填写信息。
- 方式一:直接在页面填写“SQL 关键词”和“替换为”信息。
- 方式二:单击“添加文件”按钮,上传规则文件。规则文件格式参考单击“下载规则模板”按钮获取的规则模板。
- 参数填写完成后,单击搜索,界面下方会展示满足所有参数条件的对象。
- 所有错误字符串,均可在如图5“转换/迁移错误”中查看。
- 如果 UGO 目标数据库连接的用户与 Schema 的所有者不相同,则 UGO 服务将更改 Schema 所有者的名称与用户相同。
- 单击“搜索”,可在下方看到搜索出的符合要求的待修改对象列表。 图7 搜索结果
支持按照 Schema、对象类型、转换状态、迁移状态搜索。
单击“匹配结果”可查看具体的匹配结果信息。
- 将需要替换的 SQL 语句输入“替换为”的输入框中,单击“替换”。
按顺序依次执行多条语句更新规则,每条规则基于前一条规则的执行结果进行 SQL 关键词替换。
- 替换完成后,单击,进入历史记录页面,可以看到历史批量替换记录。 图8 历史记录
- 单击“查看列表”,进入历史记录界面,单击操作列“查看 SQL”,可查看替换前后的 SQL 语句。 图9 历史记录
校正转换/迁移失败对象
修改后的语句将直接在目标数据库上运行,您需避免使用:导致其他表和其他对象类型丢失的语句,以及影响目标数据库性能的语句,如消耗过多CPU或内存的语句。
- 登录UGO控制台。
- 单击左侧导航栏,显示迁移项目列表。
- 单击待迁移项目的“操作 > 迁移”,进入迁移项目,选择“语法转换”页签或者“迁移验证”页签,进入“对象列表”页面。 图10 对象列表-语法转换完成但是未迁移
- 显示Schema名称、对象名称、对象类型、转换状态、迁移状态、操作等信息。
- 迁移对象列表支持按“对象类型”、“Schema”、“转换状态”、“迁移状态”、“对象名称”、“SQL 内容包含”、“SQL 内容不包含”、“转换错误包含”、“迁移错误包含”筛选。其中“对象名称”支持模糊查询;“SQL 内容包含”、“SQL 内容不包含”可筛选 SQL 原语句中包含或不包含指定关键词的对象,“SQL 内容包含”、“SQL 内容不包含”最多各支持三个关键词,每个关键词最多 100 个字符,若项目中对象数量较多,当前查询返回较慢。
- 使用“Schema”作为筛选条件时,如果“Schema”对象名称中含有空白字符,无法筛选出结果。
- TABLE、INDEX 等对象存在被拆分为多个子对象的情况。
- 拆分子对象功能用于控制对象多种特性的迁移顺序。
- 如需查看全量子对象的状态和内容,需在父类对象处单击“查看详情”。
- 子对象拆分依赖 UGO 的转换功能,当出现解析脚本出错和转换脚本出错的情形时,不会拆分子对象。
- 被拆分出子对象的对象状态与其他对象会有所不同:
- 当父对象转换状态为成功,则子对象转换状态都为成功。
- 当父对象转换状态为失败,则至少存在一个子对象转换状态为失败。
- 当父对象转换状态为手工修改,则至少有一个子对象转换状态为手工修改。
- 当父对象在迁移后,迁移状态为成功,则子对象迁移状态为成功或是忽略。
- 当父对象迁移后迁移状态为失败,则至少存在一个子对象迁移状态为失败。
- 当子对象全被忽略迁移,父对象也将会被忽略迁移。
- 选择“语法转换”页签,进入“对象列表”页面,选择单条转换失败对象,单击,进入对象详细信息页面。可以查看“转换错误”、“转换风险”信息和“修改”建议。 图11 对象详细信息-转换错误和告警
对转换失败的对象进行SQL语句修改。单击“保存”,“转换状态”标记为“手工修改”,然后单击“迁移”,跳出弹框确认是否在目标数据库执行单条SQL语句,单击“确认”。图12 单条SQL直接迁移验证
- 选择“迁移验证”页签,进入“对象列表”页面,选择单条迁移失败对象,单击,进入对象详细信息页面。可以查看“迁移错误”和“修改”建议。 图13 对象详细信息-迁移错误
对迁移失败的对象进行SQL语句修改。单击“保存”,“迁移状态”标记为“待启动”,然后单击“迁移”,跳出弹框确认是否在目标数据库执行单条SQL语句,单击“确认”。图14 单条SQL直接迁移验证
- 建议按照管理、存储、代码、作业对象的顺序进行对象校正。
- 基本信息页面。可查看转换或迁移失败报错信息。若有修改建议,也同时展示。
- “转换状态”为“失败”时,显示“转换错误”。
- “迁移状态”为“失败”时,显示“迁移错误”。
当目标库为 GaussDB 时,数据库对象命名需要满足约束:非时序表长度不超过 63 个字节,时序表长度不超过 53 个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$、#,如果对象名不满足该约束,会导致迁移失败。
- 可对SQL语句进行修改。
- 导出:将目标端代码以 .sql 格式导出。命名为:对象名称 .sql。
- 导入:可直接导入修改后的 SQL 文件,上传 SQL 文件将自动保存所有更改。
- 比较:默认关闭。开启则会比较展示源端与目标端的详细代码对比,此时 SQL 语句不可编辑。
- 复制:可单击源端或目标端后的
,将 SQL 语句复制至剪贴板。 - 全屏:可单击目标端后的
,将目标端编辑框全屏展示,便于编辑修改。全屏时可单击
图标退出全屏,或者单击编辑框后使用键盘 Esc 退出。 - 更新依赖关系数据:如果启用,还将验证所有从属对象。默认启用,也可关闭。
- 重置:已修改的代码,在还未保存前,可单击“重置”,清除所有修改。若已保存,只能回滚至历史修改代码。
- 保存:保存对目标端代码的修改。并会形成记录保存在“修改历史”。
- 迁移:单条转换失败对象或者单条迁移失败对象修改SQL后,单击“保存”,然后单击“迁移”,可直接迁移到目标数据库。
- 修改后单击“保存”,会形成修改记录,单击“修改历史”按钮,查看修改历史。
列表展示修改时间,单击对应时间后的“回滚”,可以回滚至最近时间的修改记录。
- 单击历史ID前的下拉图标,对比展示修改记录。 图15 修改历史
- Oracle 为源的迁移任务,DB_LINK 类型的对象只支持转换,不支持迁移,迁移状态默认为“忽略”。
