本文介绍通过迁移服务MMS(MaxCompute Migration Service)将数据源迁移至MaxCompute。
迁移作业类型
MMS支持单库整库迁移、部分迁移(多表)、部分迁移(多分区)三种迁移作业类型。
- 单库整库迁移,迁移单个Database。 
- 部分迁移(多表),迁移一个或多个Table。 
- 部分迁移(多分区), 迁移一个或多个Partition。 
操作步骤
在创建迁移作业前,需确保已配置数据源。
- 登录MaxCompute控制台,在左上角选择目标地域。 
- 在左侧导航栏,选择。 
- 在数据源页签,单击目标数据源左侧的  ,展开数据库列表。 ,展开数据库列表。
- 单击目标数据库操作列中的整库迁移或部分迁移,配置相关参数。 - 若单击部分迁移,将进入目标数据库页面,在表列表和分区列表页签,勾选待迁移的表或分区,然后单击新建迁移作业。 - 参数名 - 是否必填 - 说明 - 库名 - 是 - 默认为待迁移的数据库名称。 - 作业名称 - 是 - 作业名称。 - 数据源 - 是 - 默认为当前数据源名称。 - 源库 - 是 - 默认为当前待迁移的数据库名称。 - 目标MaxCompute项目 - 是 - 选择目标Maxompute项目名称。 说明- 当数据源为BigQuery时,目标MaxCompute项目必须支持Schema。 - 目标Schema - 是 - 选择目标MaxCompute项目下的Schema。Schema详情请参见Schema操作。 说明- 该参数仅适用于已开启Schema的项目。 - table黑白名单 - 否 - 你可以选择白名单或黑名单,介绍如下: - 白名单:即为需要迁移的Table名称,多个Table名称之间以半角逗号(,)分隔。 说明- 当迁移类型选择部分迁移(多表),白名单为已勾选的表。 
- 整库迁移进入时,白名单默认为空。 
 
- 黑名单:为不需要迁移的Table名称,多个Table名称之间以半角逗号(,)分隔。 
 - 当迁移类型选择部分迁移(多分区),无需进行此配置。 - ETA - 否 - 选择期望作业执行完成时间,MMS服务将根据该时间进行优先级排序。 - 开启校验 - 否 - 如果开启,MMS将在源、目标端分区分别执行 - SELECT COUNT(*),获取迁移对象的行数,根据行数验证数据是否迁移成功。- 增量迁移 - 否 - 如果开启,则新建任务将忽略已经迁移成功的分区。 - 只迁移表结构 - 否 - 只在MaxCompute端创建相应表和分区的结构,不迁移数据。 - 分区过滤 - 否 - 分区过滤表达式。例如: - p1 >= '2022-03-04' and (p2 = 10 or p3 > 20) and p4 in ('abc', 'cde'),介绍如下:- p1、p2和p3均为分区名。 
- 分区值仅包含字符串和数字,字符串被双引号或单引号包裹。 - 除INT和BIGINT类型的分区列值外,其他类型的分区值都只能取字符串值。 
- 比较操作符包括: - >、>=、= 、<、<=、<>。
- 分区过滤表达式支持 - IN操作符。
- 逻辑操作符包括: - AND和- OR。
- 支持使用括号。 
 - 表名映射 - 否 - 表迁移到目标MaxCompute后的名称。 - 字段名映射 - 否 - 列名中迁移到MaxCompute后的名称。 - 其他配置 - 否 - 针对TableType类型的映射, 配置项为JSON格式,如: - { "mc.table.type": { "dataset1.table1":{"table.type":"delta","pk":["id1"]}, "dataset2.table2":{"table.type":"delta","pk":["id1","id2"]}, "dataset2.table2":{"table.type":"transactional"} } }。
- 单击提交,完成迁移作业的创建。 - 创建完成后,您可在迁移作业页签,查看迁移作业状态,若迁移作业运行失败后: - 您可以单击目标迁移作业操作列中的详情,进入迁移任务列表页面,单击目标任务操作列中日志,查看失败原因。 
- 您可以单击目标迁移作业操作列中的重试,重跑迁移作业。 说明- 数据迁移会涉及迁移Schema、迁移数据、数据校验三个阶段,如果迁移作业的某个任务迁移任务失败,执行重试操作后,迁移任务会重新从迁移数据阶段开始重新运行。