迁移平台概述
Halo 迁移平台(HMT)是面向异构数据库迁移场景的专用平台,用于将 Oracle、MySQL 等源端数据库中的元数据与数据迁移到 Halo 数据库,并提供迁移前后的对比与校验能力。本章介绍平台的产品定位、系统架构与迁移能力边界。
产品定位
Halo 迁移平台是一个企业级异构数据库迁移平台,致力于利用简洁直观的 Web 可视化管理界面,高效、稳定地完成 Oracle、MySQL 等多种数据库到 Halo 数据库之间的数据迁移。
平台的典型使用场景:
- 异构数据库国产化迁移:将存量 Oracle / MySQL 业务库整体迁移至 Halo。
- 迁移验证:迁移前后对源端与目标端做元数据对比与数据校验,确认迁移结果一致。
- 分阶段迁移:先迁元数据(表结构、约束、索引、视图、序列等),再迁数据,最后补齐依赖数据的对象(如外键约束),保证迁移过程中数据的一致性与完整性。
系统架构
平台采用 B/S 架构,用户通过浏览器访问 Web 控制台完成全部迁移操作,无需在客户端安装任何软件。
平台部署形态包含两个服务进程(同机部署、协同工作):
表 1-1 平台服务进程
| 服务 | 默认端口 | 职责 |
|---|---|---|
| hmt-admin | 9527 | Web 控制台与任务调度入口,浏览器访问入口 |
| hmt-executor | 9999 | 任务执行器,接收调度并执行元数据 / 数据迁移任务 |
平台自身的元数据(数据源、项目、任务、日志等)存储在一套 Halo 数据库的 hmt 库(datax_web schema)中,该库称为平台存储库,在安装过程中自动创建。
说明:执行器在服务启动后会自动注册到平台。创建迁移任务前,须先在"执行器管理"页面确认执行器已绑定在线机器,否则后续创建的任务将全部执行失败(见快速开始 · 检查执行器)。
迁移能力边界
平台各功能的源端与目标端支持范围如下。未列入的能力当前版本不支持,请勿在迁移方案中假设其可用。
表 1-2 迁移能力边界
| 功能 | 源端 | 目标端 |
|---|---|---|
| 元数据迁移 | Oracle、MySQL | Halo |
| 数据迁移 | Oracle、MySQL | Halo |
| 数据对比(库对比) | Oracle、MySQL | Halo |
| 数据校验 | Oracle、MySQL、PostgreSQL | Halo |
| 一键迁移 | Oracle、MySQL | Halo |
注意:本章能力边界为产品功能口径。各源端版本与各 Halo 版本组合的实际迁移效果(含已知限制,如 RAW 类型数据迁移失败)以兼容性矩阵的实测结论为准。
元数据迁移支持的对象
元数据迁移任务可勾选迁移的对象类型如下:
表 1-3 元数据迁移对象类型
| 类型 | 说明 |
|---|---|
| 自定义类型 | 用户自定义类型 |
| 表结构 | 表定义(字段、数据类型、长度等) |
| 约束 | 主键、外键等约束 |
| 索引 | 索引定义 |
| 函数 | 函数定义 |
| 存储过程 | 存储过程定义 |
| 视图 | 视图定义 |
| 触发器 | 触发器定义 |
| Package | 包定义 |
| 序列 | 序列定义 |
| 表注释 | 表及字段注释 |
| 同义词 | 同义词定义 |
说明:Package、函数、存储过程、视图、自定义类型、同义词这些对象的迁移任务,平台默认会将 psql 方式切换成 hsql 和 -f 脚本方式执行。
Oracle 源端账号权限要求
平台统计源端元数据时需要查询 Oracle 数据字典(如 DBA_OBJECTS)。使用普通业务账号(无数据字典权限)作为源端账号时,元数据任务会整体失败且报错信息不直观。创建数据源前,请先在 Oracle 端为迁移账号授予以下权限:
GRANT SELECT_CATALOG_ROLE, SELECT ANY DICTIONARY TO 迁移账号;
目标端必须是 Oracle 兼容模式数据库
从 Oracle 迁移时,平台生成的元数据 DDL 保留 Oracle 语法(NUMBER / VARCHAR2 / CLOB / RAW 等),必须写入 Halo 的 Oracle 兼容模式数据库;写入 PostgreSQL 模式数据库会因语法不兼容而失败。目标端 Halo 须提前启用 Oracle 兼容模式并创建目标 schema。