跳到主要内容

快速开始

本章以 Oracle → Halo 迁移为例,给出从登录平台到迁移结果验证的完整网页操作流程。按顺序执行即可完成一次迁移;每步给出网页操作路径与实测注意事项。

建议的执行顺序:

登录 → 执行器检查 → 创建数据源(源端/目标端)→ 创建项目 → 创建任务模板
→ 元数据迁移(先表结构)→ 数据迁移 → 迁移结果验证(库对比 + 数据校验)

登录平台​

浏览器输入 http://服务器IP:9527/new-ui/index.html,输入用户名 admin 与密码(安装时配置的密码,默认口令首次登录后请立即修改),即可进入系统。

检查执行器​

左侧菜单栏进入"执行器管理",检查系统自动注册的执行器是否绑定了在线机器。

注意:执行器未绑定在线机器时,之后创建的任务将全部执行失败。请务必在创建任何任务前先完成本项检查。

创建数据源​

左侧菜单栏进入"数据源管理",点击"新增"按钮添加数据源。依次:选择数据源类型 → 输入用户名和密码 → 将 jdbc url 中花括号 {} 替换成实际连接参数 → 点击"测试连接",弹出 success 提示框代表连接成功 → 保存。

需要分别创建源端与目标端两个数据源:

表 3-1 数据源配置要点

数据源类型关键配置
源端Oracle迁移账号须先授予 SELECT_CATALOG_ROLE、SELECT ANY DICTIONARY(见Oracle 源端账号权限)
目标端Halojdbc url 必须用 1521 端口(Oracle 兼容入口),不要带查询参数(见 3.3.2、3.3.3)

Oracle 源端账号权限​

平台统计元数据需查询 DBA_OBJECTS 等数据字典。普通业务账号无数据字典权限时,元数据任务整体失败且页面报错不直观。创建数据源前,请在 Oracle 端执行:

GRANT SELECT_CATALOG_ROLE, SELECT ANY DICTIONARY TO 迁移账号;

注意:数据源测试连接通过不代表具备元数据迁移权限——测试连接只验证账号密码与服务可达,不校验数据字典权限。请以本节授权为准。

目标端数据源​

Oracle → Halo 迁移时,目标端数据源的 jdbc url 形如 jdbc:halo://目标端IP:1521/oracle(1521 为 Oracle 兼容入口)。目标库须为 Oracle 兼容库(含 aux_oracle 扩展)并预建目标 schema。

jdbc url 不要带查询参数​

注意:jdbc url 中带 ?参数(如 jdbc:halo://ip:port/db?currentSchema=public)时,生成 psql 命令会把 ?currentSchema=public 当库名拼接,任务报 invalid connection option。数据源 URL 一律不要带查询参数(build260709)。

创建项目​

左侧菜单栏进入"项目管理",点击"新增"分别添加两个项目:

  • 元数据迁移项目:承载元数据类任务。
  • 数据迁移项目:承载数据迁移任务。

后续任务须关联到对应项目。

创建任务模板​

左侧菜单栏进入"任务管理"→"任务模板",点击"新增"添加任务模板,所属项目选择创建项目小节中创建的项目。分别添加:

  • 元数据迁移模板(关联元数据迁移项目)
  • 数据迁移模板(关联数据迁移项目)

模板中的执行器与任务处理器保持默认即可。

元数据迁移​

创建元数据迁移任务​

左侧菜单栏进入"任务管理"→"构建元数据任务",依次:

选择源端数据源 → 选择源端 schema → 添加过滤条件(可选)→ 选择目标端数据源 → 勾选需要迁移的元数据类型 → 选择任务模板(创建任务模板中创建的元数据迁移模板)→ 点击"批量创建任务"。页面右侧生成任务创建日志(显示最近 10 次元数据迁移任务日志)。

说明:表拆分开关默认关闭;开启后会将表结构拆分成单个任务。

元数据类型按需勾选,可选:自定义类型、表结构、约束、索引、函数、存储过程、视图、触发器、Package、序列、表注释、同义词(各类型说明见迁移平台概述 · 元数据迁移支持的对象)。

执行顺序​

元数据任务须按以下顺序执行:

1. 自定义类型任务先执行成功。

2. 表结构任务执行成功。

3. 待表数据全部迁移完成后(见数据迁移),再执行约束、索引等剩余任务。

说明:迁完数据再迁约束、索引等任务,目的是保证数据的一致性和完整性,同时提高迁移效率和质量。

批量执行​

左侧菜单栏进入"任务管理列表",选择所属项目、选择元数据类型,点击"搜索"后,使用"批量启动"执行该类型下的任务。单个任务可点击操作栏"更多"→"执行一次"。

说明:大数据量情况下为便于定位失败任务,建议每次批量启动只选择一种元数据类型,全部成功后再进行下一类。失败的任务可单个重新执行,或用"失败重启"批量执行。

数据迁移​

前提:表结构已迁移完成(元数据迁移),且目标 schema 已预建。

批量创建数据迁移任务​

左侧菜单栏进入"任务管理"→"批量构建任务":

1. 选择源端数据源 → 选择 Schema → 勾选需要迁移的表。

2. 选择目标端数据源 → 选择 Schema → 勾选与步骤 1 对应的表。

3. 源端和目标端表如果不一致,任务将提示创建失败。使用"差异校验"功能可明确标出不一致的表,取消勾选不一致的表即可。

4. 选择数据迁移模板,点击"批量创建任务"。每张表生成一个任务。

单表构建(可选)​

单表迁移或需要定制 SQL 时,使用"单表构建任务":选择源端数据源/schema/表并全选表字段(也可自行填写 SQL 语句并点击"解析字段");选择目标端数据源/schema/表并全选字段,可按需填写前置 SQL(插入前执行,一般用于清空表数据,仅一条)与 postSql(插入完成后执行,可多条,用 ; 隔开);点击"构建任务 JSON"核对信息,选择任务模板后点击"创建任务"。

说明:切分字段可指定主键字段,数据量大的表任务执行时会自动分片并发执行加速同步,数据量小可不填。填写了 SQL 语句时,where 条件同时填写则 where 条件无效。

执行数据迁移任务​

左侧菜单栏进入"任务管理列表",选择数据迁移项目 → 点击"搜索"→ 点击"批量启动",所选任务陆续执行。可通过操作栏"更多"→"查询日志"查看失败原因。

写入方式选择​

生成的数据迁移任务默认使用 halobatchwriter 方式写入目标端,即 copy 命令方式,处理大量数据时通常比 insert 快,但要求数据格式正确。

包含大字段(BLOB / CLOB / NCLOB / RAW)的任务若 copy 方式写入失败,可在任务编辑中切换为 halowriter 方式(insert 命令方式)重新执行;也可在任务管理列表用"批量设置"功能筛选包含大字段的任务批量切换。

注意:RAW 类型列在 copy 与 insert 两种写入方式下当前均迁移失败(build260709 实测,见兼容性矩阵)。含 RAW 列的表暂无法通过平台迁移,请先确认源表是否含 RAW 列并规划替代方案。

迁移结果验证​

数据库对比​

左侧菜单栏进入"对比管理",选择源端与目标端数据源及 schema,对比两个数据库指定 schema 下的表数据量以及元数据对象的定义是否一致。快捷筛选可直接查询出源端/目标端不存在的对象;对象类型可筛选对应元数据类型,总计对比结果随之变化。

说明:表结构对比 UI 界面会标出所有字符级差异,而列表顶部显示"一致"属正常现象——UI 界面仅展示字符间差异,与后台对比逻辑不同。后台对比逻辑为:字符不区分大小写、类型长度不对比、目标端类型按映射反转换后再比对。

数据校验​

数据迁移完毕后,进行源端与目标端数据结果的差异化校验:

1. 配置校验参数。常用两个参数:batch-compare-size(默认 2000,每表抽取 2000 条生成 hash 值对比)、batch-check-size(默认 1000,每表 check 对比只比较和显示 1000 条数据);设为 null 则全量校验。建议 batch-compare-size ≥ batch-check-size。

2. 左侧菜单栏"数据校验",依次:选择校验源端数据源 → 源端 Schema → 需要校验的表 → 目标端数据源 → 目标端 Schema → 选择百分比校验或具体表校验(二选一)→ 确认。

3. 查看结果。校验状态分五种:校验一致、校验不一致、校验中、校验失败、跳过校验(遇到不支持的数据类型或表无主键时跳过)。点击"差异详情"可查看具体差异数据,"查询日志"可复查运行日志。

故障排查入口​

网页操作主线之外,两类排查手段供进阶使用:

  • 任务失败先看网页日志:任务管理列表 → 操作栏"更多"→"查询日志";平台全部任务日志也可在"日志管理"菜单查询。
  • 深度排查可查库表与 API:任务配置明细存储在平台存储库 datax_web schema 的 job_info 表(job_json 字段);平台亦提供 REST API(/api/...),供自动化集成场景使用,日常操作以网页为准。