华为云数据库和应用迁移UGO对接使用完全指南
1. UGO概述与核心价值
数据库和应用迁移 UGO(Database and Application Migration UGO,以下简称UGO)是华为云专注于异构数据库结构迁移的专业服务。在数据库迁移上云的过程中,结构迁移往往比数据迁移更具挑战性——不同数据库的DDL语法差异巨大,存储过程、函数、触发器等对象的手工改写工作量大且容易出错。UGO正是为解决这一痛点而生:它能够将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB或RDS的SQL语法。
UGO的核心能力可概括为两大功能模块加一个增值特性。数据库评估功能对源库的基本信息、性能数据以及特定对象类型的SQL进行采集,综合兼容性、对象复杂度等因素进行分析,给出源库与目标库的兼容性和改造成本分析报告,辅助用户进行目标库选型决策和迁移工作量评估。对象迁移功能在完成评估并确认目标数据库后,引导用户制定转换计划、设计转换方案,完成语法自动转换和一键迁移。此外,UGO还提供SQL审核功能,内置200多条审核规则,覆盖DML、DDL、PL/SQL等各类SQL的深度审核,支持规则内风险级别、阈值及建议内容的调整。
在异构数据库迁移场景中,UGO与华为云数据复制服务DRS形成了完整的闭环方案:UGO负责结构迁移和语法转换,DRS负责异构数据库数据的在线搬迁。两者结合可以实现主流商用数据库到华为云数据库的自动化迁移,助力用户轻松实现一键上云、一键切换数据库。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 对接前的准备工作
2.1 权限配置
在使用UGO之前,需要确保账号具备相应的操作权限。UGO通过统一身份认证服务IAM进行权限管理。默认情况下,新建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色。
UGO的权限策略主要分为以下几类:UGO Administrator拥有UGO的完整管理权限,可以创建、删除评估项目和迁移项目;UGO ReadOnlyAccess仅拥有UGO资源的只读权限。在实际生产环境中,建议遵循最小权限原则:为不同职能部门的员工创建IAM用户,分别授予与其职责匹配的权限。
验证权限是否生效的方法很简单:在服务列表中选择数据库和应用迁移UGO,进入UGO主界面,尝试创建评估项目。如果能够成功创建,则说明权限配置正确。
2.2 网络连通性准备
UGO连接源数据库目前支持公网连接方式。在创建评估项目之前,需要确保以下网络条件满足:源数据库与UGO服务的网络已打通;源数据库的防火墙需要放通UGO服务的访问;源数据库的访问白名单限制需要对UGO服务放行。各类型数据库添加白名单的方法不同,具体可参考各数据库官方文档。
在创建评估项目时,可以在基本信息填写完成后单击"开始测试"来验证网络连通性。如果测试连接失败,会给出错误提示"无法连接到数据库"。此时需要排查:数据库连接信息是否正确、数据库用户是否有连接权限、数据库与UGO服务的网络是否通畅、数据库防火墙是否限制了UGO服务访问、数据库已存在的连接是否达到最大连接数限制。
对于目标数据库的连接,UGO同样支持公网方式,通过弹性公网IP连接目标数据库。如果目标库网络有IP白名单限制,需要将UGO的弹性公网IP添加至目标库网络白名单。在创建评估项目的基础信息页签中可以获取UGO的弹性公网IP。
2.3 源数据库准备
在开始评估之前,需要对源数据库做一些准备工作。由于连接源库采集对象会影响源库性能,建议采用非生产环境数据库,或者在业务低峰期进行评估。对于Oracle源库,需要按照官方文档进行源库准备和授权。对于GoldenDB源库,建议使用CN节点上的用户来创建评估任务。
UGO支持的源数据库类型包括Oracle、MySQL、PostgreSQL、GoldenDB、Microsoft SQL Server等。其中PostgreSQL、GoldenDB、Microsoft SQL Server目前仅支持白名单用户使用,如需使用可以在管理控制台右上角选择"工单 > 新建工单"完成工单提交。
3. 创建数据库评估项目
数据库评估是整个迁移流程的第一步,也是至关重要的一步。创建数据库评估是对源库的基本信息以及特定源库对象进行SQL采集,分析生成评估报告。通过评估可以采集出源库Schema数量,评估迁移工作量以及迁移风险,推荐合适的目标数据库。
3.1 操作步骤
登录UGO控制台,单击左侧导航栏"结构迁移 > 数据库评估"。在评估数据库页面,单击右上角的"创建项目"按钮。进入基本信息页面,完成基本信息的填写。基本信息填写完成后,单击"开始测试"验证数据库连接。测试连接成功后,单击"下一步"进入预检查页面。所有预检查结果均成功后,单击"下一步"进入选择评估范围页面。程序只会采集用户选择范围内的数据库对象,即勾选的Schema下的对象。选择完成后单击"下一步"进入任务确认页面,显示基础信息、预检查情况、选定的目标数据库、已选择及未选择的Schema和对象类型。检查无误后单击"创建",项目创建成功。
3.2 评估过程中的注意事项
所有采集的数据存储在租户区的源数据库中,数据库密码会加密存储,相关数据只有用户在UGO界面可见。当用户删除评估任务时,用户数据将被删除。仅当Oracle为源数据库时,支持动态SQL相关评估以及对象级权限采集。一个租户下最多只能创建10个评估项目。同一套源库中UGO不支持评估同名的重载函数。源数据库为MySQL或GoldenDB时用户名称不支持特殊字符,包括单引号、双引号、反斜杠等。
项目创建成功后,需要经过数据采集、项目评估和预迁移评估阶段,可在项目状态中查看实时状态。在项目状态为"进行中 待确认目标数据库"之前,可以停止及恢复正在创建的评估项目。
3.3 查看评估结果与确认目标数据库
评估完成后,需要查看评估结果并确认目标数据库。选择项目状态为"进行中-确认目标库"的待确认项目,单击项目名称或单击待确认项目项目状态列的"待确认目标数据库"。进入目标数据库分析页面,选中待迁移的目标数据库,单击"确认数据库选择"按钮。一旦确定,确认数据库选择按钮置灰,不可再更改,因此需要谨慎选择。确定后,数据库评估页面的项目状态由"进行中 待确认目标数据库"变为"完成 创建迁移项目"。
4. 创建对象迁移项目
完成数据库评估并确认目标数据库后,就可以创建对象迁移项目了。每个迁移项目对应一个评估项目,但可以基于一个评估项目多次创建迁移项目。
4.1 前提条件
创建迁移项目需要满足以下前提条件:用户需拥有创建UGO迁移项目的对应权限;创建迁移项目至少需要一个状态显示为"完成"的数据库评估项目;待使用的目标数据库类型及版本信息要与评估项目确认的目标库类型及版本一致;待连接的目标库正常,无欠费、停机等情况;确保提供的目标数据库可正常访问,且连接用户需要具有对于Schema、表、程序、索引、用户、函数、视图等迁移对象的创建、删除和更改的权限。
4.2 创建步骤
登录UGO控制台,单击左侧导航栏"结构迁移 > 对象迁移"。在对象迁移页面,单击右上角的"创建迁移项目"。在创建迁移项目页面完成信息填写。项目名称必须唯一,长度范围为5到50个字符,只允许包含英文字母、数字、下划线、中划线,以字母开头、数字或字母结束。可以选择异常通知方式,默认方式为SMN主题。若需要发送消息,需要先创建SMN主题并添加订阅。下拉选择已确认目标数据库的评估项目。数据库连接方式选择"公网",通过弹性公网IP连接目标数据库,需要填写主机名(或主机IP地址)和主机端口。单击"测试连接"进行检查。测试连接成功后单击"下一步"进入预检查界面。所有检查项检查结果为"成功"或"警告"时,"下一步"按钮才会被激活。若已了解检查项未处理可能会对迁移造成的不良影响,仍想要创建项目,可单击"跳过检查失败项"。
4.3 目标库为GaussDB时的特殊检查
当目标库为GaussDB时,UGO会进行以下专项检查:兼容模式检查、字符集检查、GUC参数检查。这些检查确保目标数据库的配置与迁移需求相匹配。若目标库为GaussDB,建议使用与源数据库对应的兼容模式数据库。
5. 实施对象迁移
迁移项目创建完成后,就可以开始实施对象迁移了。整个迁移过程分为五个步骤:转换计划、转换配置、语法转换、对象校正、迁移验证。
5.1 步骤一:转换计划
在对象迁移页面,单击待迁移项目的"操作 > 迁移",进入转换计划页面。在转换计划页面,显示待转换对象及分类,可以按照更新日期或具体对象名称进行搜索,也可依据Schema、对象状态以及转换状态进行筛选。
转换计划支持多种操作方式。界面选取转换对象:左侧树显示当前默认转换的全部对象,单击"选择迁移对象类型"可快速按照类型将不迁移的对象的"需要转换"批量设置为"否"。单击Schema前的复选框勾选具体对象,选择"跳过转换"或"转换"按钮,支持批量操作。本地上传指定转换对象:单击"指定转换对象",下载模板,将待转换对象的信息填入Excel文件后上传。Excel表格第一列为Schema,第二列为对象类型,第三列为对象名称,三列唯一指定一个对象,内容区分大小写,都不可为空。表格最大不超过30M,行数最多为65535行(不包括表头)。
当源库为Oracle和MySQL且目标库为GaussDB的分布式时,支持设置GaussDB数据分布方式。对象类型为Table时可设置数据分布方式,包括复制表和哈希分布。当待转换对象中包含USER对象时,需要为用户设置统一的密码。密码长度最少8个字符,最多32个字符,至少包含大写字母、小写字母、数字和特殊字符四类中的三类,不能使用空格,可重复字符不能超过3个连续字符。
5.2 步骤二:转换配置
在转换计划页面单击"下一步"进入转换配置页面。在"基线模板"下拉框中进行选择。系统提供默认值和最大兼容性两个内置模板。当需要使用一套转换配置方案对多个数据库进行迁移时,用户可以在创建迁移项目前提前创建自定义转换配置模板,在后续的迁移项目中快速复用。系统视图、高级包的转换均按照GaussDB最新版本进行兼容性转换,如果目标库是老版本可能存在转换后的SQL不兼容的情况。根据不同的业务需要设置转换配置,以得到最优的转换结果。
5.3 步骤三:语法转换
配置完成后启动语法转换,UGO服务会将源库的SQL语法一键转换成目标库语法。UGO专注于异构数据库结构迁移,可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB/RDS的SQL语法。转换过程中,UGO会自动识别语法差异并进行适配转换。
5.4 步骤四:对象校正
转换失败的语法支持手工进行校正。在对象校正页签中,可以查看迁移详情和语法转换情况。对于转换失败或迁移失败的对象,UGO提供了对象编辑、批量修改等功能,简化手动改造工作的同时还会确保每次修改的留痕,提供历史修改记录查看和回滚的能力。修改完成后进入迁移验证阶段。
5.5 步骤五:迁移验证
在迁移验证阶段,在目标数据库执行迁移,完成源库对象到目标库的迁移。单击"迁移验证配置"可以对迁移过程中的迁移行为进行详细设置。单击"启动"开始进行迁移验证,开始将对象迁移至目标数据库中。迁移后返回对象校正页面并查看迁移失败的对象详情时,展示的是"迁移错误"。当迁移验证进度为100%后,可以查看各具体Schema的迁移情况。查看迁移进度和详情来确认迁移结果。
6. SQL审核功能
除了数据库评估和对象迁移两大核心功能外,UGO还提供了SQL审核功能。SQL审核功能能够帮助用户在开发阶段发现隐藏在代码中的SQL规范性、设计合理性和性能等问题。内置200多条审核规则,覆盖DML、DDL、PL/SQL等各类SQL的深度审核。支持规则内风险级别、阈值及建议内容的调整,和规则间的自由组合创建定制化审核模板。
UGO支持GaussDB、MySQL和PostgreSQL三种数据库的审核。可通过单语句、批量代码文件上传(自动提取SQL)、直连数据库共3种方式接入SQL进行审核。SQL审核最大可以创建110个审核任务,最多支持10个审核任务并发执行。
7. UGO与DRS协同方案
在异构数据库迁移场景中,UGO和DRS是相辅相成的两个服务。UGO专注于结构迁移和语法转换,将源库的DDL、存储过程、函数等结构对象转换并迁移到目标库。DRS专注于数据迁移和同步,实现异构数据库数据的在线搬迁。
对于存储过程、函数较复杂的异构数据库上云场景,UGO+DRS是一个完整的闭环方案。UGO完成结构迁移后,DRS再进行数据迁移,两者配合可以实现主流商用数据库到华为云数据库的自动化迁移,助力用户轻松实现一键上云、一键切换数据库。
8. 高级特性与最佳实践
8.1 转换配置模板复用
当需要对多个数据库使用同一套转换配置方案时,可以在创建迁移项目前提前创建并设置好转换配置模板。在后续的迁移项目中可快速复用该模板,避免重复配置。进入转换配置管理页面,单击"创建配置模板"进入创建页面。可通过模板名称、源数据库类型、目标数据库类型以及创建者进行搜索查询。
8.2 对象批量校正
对于转换失败或迁移失败的对象,UGO提供了强大的批量处理能力。可以在对象校正页签中批量查看失败对象,进行批量修改。每次修改都会留痕,提供历史修改记录查看和回滚的能力。
8.3 增量评估与差异化分析
UGO支持增量评估和差异化分析与报告功能。当源数据库发生变更时,可以只评估变更的部分,而不需要对整个数据库重新评估,大大提高了评估效率。
9. 常见问题与排障
9.1 数据库连接错误
连接数据库时发生错误是UGO使用中最常见的问题。可能的原因包括:数据库连接信息不正确、数据库用户没有连接权限、数据库与UGO服务的网络不通、数据库防火墙限制UGO服务访问、数据库已存在的连接达到数据库设置的最大连接数限制。排查时应逐一检查这些方面。
9.2 采集超时
UGO数据库采集源库DDL信息时设定采集时间为60秒,如果数据库对象过大或因数据库性能、网络连接等原因导致60秒未返回数据,采集会超时。解决方案是优化网络环境或分批次采集。
9.3 SMN主题无法选择
在创建评估项目或迁移项目时无法选择已创建的SMN主题,原因可能是没有请求订阅。在创建主题、添加订阅后,还需要请求订阅该主题。
10. Python脚本调用UGO API示例
除了通过控制台操作外,UGO也支持通过API进行编程式管理。以下是一个使用Python调用UGO API创建评估项目的示例脚本:
import requests
import json
# 配置信息
ak = "your-access-key"
sk = "your-secret-key"
project_id = "your-project-id"
region = "cn-north-4"
# 获取Token
def get_token(ak, sk, project_id):
url = f"https://iam.{region}.myhuaweicloud.com/v3/auth/tokens"
payload = {
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": ak,
"password": sk,
"domain": {
"name": ak
}
}
}
},
"scope": {
"project": {
"id": project_id
}
}
}
}
response = requests.post(url, json=payload)
return response.headers.get("X-Subject-Token")
# 创建评估项目
def create_evaluation_project(token, project_id):
url = f"https://ugo.{region}.myhuaweicloud.com/v1/{project_id}/evaluation-projects"
headers = {
"X-Auth-Token": token,
"Content-Type": "application/json"
}
payload = {
"name": "python-demo-evaluation",
"source_db_type": "ORACLE",
"source_db_version": "11g",
"target_db_type": "GaussDB",
"target_db_version": "V2.0-8.100",
"source_db_info": {
"host": "192.168.1.100",
"port": 1521,
"service_name": "ORCL",
"username": "scott",
"password": "tiger"
}
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
if __name__ == "__main__":
token = get_token(ak, sk, project_id)
result = create_evaluation_project(token, project_id)
print(json.dumps(result, indent=2))
该脚本首先通过IAM获取认证Token,然后调用UGO的创建评估项目API。实际使用时需要替换AK、SK、Project ID等配置信息,并根据源库类型调整参数。
11. 迁移场景示例:Oracle到GaussDB
以本地Oracle-11g数据库迁移至华为云云数据库GaussDB分布式版V2.0-8.100企业版为例。当前支持使用公网网络和终端节点进行连接。完整流程如下:准备源Oracle数据库和目标GaussDB数据库。在UGO控制台创建评估项目,选择Oracle为源库。完成评估后确认目标数据库为GaussDB。创建迁移项目,配置目标库连接信息。制定转换计划,选择需要迁移的对象。配置转换方案。启动语法转换。对转换失败的对象进行校正。启动迁移验证,在目标库执行迁移。查看迁移进度和详情确认迁移结果。
在整个迁移过程中,UGO提供了引导式的可视化流程,用户无须擅长专业的数据库语法知识,就可以完成从源到目标库的结构迁移与验证。
12. 总结
华为云数据库和应用迁移UGO通过数据库评估、对象迁移两大核心功能加上自动化语法转换,实现了一站式异构数据库迁移。它降低了数据库迁移的技术门槛,提高了迁移效率,减少了人工改造成本。无论是从Oracle、MySQL还是其他数据库迁移到华为云GaussDB或RDS,UGO都能提供专业的结构迁移支持。结合DRS的数据迁移能力,用户可以构建完整的异构数据库端到端迁移方案。该服务目前处于商用阶段,对所有用户采用免费的优惠政策。
常见问题解答
问:UGO和DRS有什么区别?
答:UGO专注于异构数据库的结构迁移和语法转换,将源库的DDL、存储过程、函数等结构对象转换并迁移到目标库。DRS专注于数据迁移和同步,实现异构数据库数据的在线搬迁。两者配合使用可以形成完整的平滑异构数据库端到端迁移方案。
问:UGO支持哪些源数据库和目标数据库?
答:UGO支持的源数据库包括Oracle、MySQL、PostgreSQL、GoldenDB、Microsoft SQL Server等。目标数据库支持华为云GaussDB集中式版和分布式版、RDS for MySQL、RDS for PostgreSQL、TaurusDB等。具体支持的版本可查阅UGO官方文档。
问:创建评估项目时测试连接失败怎么办?
答:测试连接失败通常由以下原因导致:数据库连接信息(主机、端口、服务名、用户名、密码)不正确;数据库用户没有连接权限;数据库与UGO服务的网络不通;数据库防火墙限制了UGO服务访问;数据库已存在的连接达到最大连接数限制。建议逐一排查这些方面。
问:UGO的转换配置模板有什么作用?
答:当需要使用一套转换配置方案对多个数据库进行迁移时,可以提前创建自定义转换配置模板。在后续的迁移项目中可以快速复用该模板,避免重复配置,提高迁移效率。
问:迁移过程中USER对象如何处理?
答:如果要转换数据库对象USER,必须设置密码才能完成转换。设置的密码将用于目标数据库上创建的所有用户对象,迁移后需要逐一手动修改用户的密码。若不转换数据库对象USER,可选择跳过转换。当源库为PostgreSQL和openGauss时,USER对象实际指代ROLE对象。
问:UGO当前是否收费?
答:UGO服务目前处于商用阶段,对所有用户采用免费的优惠政策。用户可以免费使用UGO进行数据库评估和对象迁移。



