整库迁移
操作场景
CDM支持在同构、异构数据源之间进行整库迁移,迁移原理与新建表/文件迁移作业相同,关系型数据库的每张表、Elasticsearch的每个类型、MongoDB的每个集合都会作为一个子任务并发执行。
源端数据源类型 |
目的端数据源类型 |
|||||
---|---|---|---|---|---|---|
RDS for MySQL |
MRS(Hive) |
DWS |
CSS |
OBS |
CloudTable |
|
MySQL |
√ |
√ |
√ |
× |
√ |
× |
PostgreSQL |
√ |
√ |
√ |
× |
√ |
× |
Microsoft SQL Server |
√ |
√ |
√ |
× |
× |
× |
Oracle |
√ |
√ |
√ |
× |
√ |
× |
Elasticsearch |
× |
× |
× |
√ |
× |
× |
MongoDB |
× |
× |
× |
× |
× |
× |
HBase |
× |
× |
× |
× |
× |
√ |
IBM Db2 |
√ |
√ |
√ |
× |
√ |
× |
Derecho(Gauss DB) |
√ |
√ |
√ |
× |
√ |
× |
DDM |
√ |
√ |
√ |
× |
√ |
× |
SAP HANA |
√ |
√ |
√ |
× |
√ |
× |
DWS |
√ |
√ |
√ |
× |
× |
× |
Hive |
√ |
× |
√ |
× |
× |
× |
源端的这些数据库可以是部署在本地数据中心,或在ECS上自建的数据库,也可以是第三方云的数据库服务。
自动建表时的字段类型映射
CDM迁移数据库时支持在目的端自动建表。CDM在数据仓库服务(Data Warehouse Service,简称DWS)中自动建表时,DWS的表与源表的字段类型映射关系如图1所示。例如使用CDM将Oracle整库迁移到DWS,CDM在DWS上自动建表,会将Oracle的NUMBER(3,0)字段映射到DWS的SMALLINT。
前提条件
- 已新建连接。
- CDM集群与待迁移数据源可以正常通信。
操作步骤
- 登录CDM管理控制台。
- 单击左侧导航上的“集群管理”,选择集群后的“作业管理”。
- 选择 ,进入作业参数配置界面。图2 创建整库迁移作业
- 配置源端作业参数,根据待迁移的数据库类型配置对应参数,如表2所示。
表2 源端作业参数 源端数据库类型
源端参数
参数说明
取值样例
- Oracle
- MySQL
- PostgreSQL
- Microsoft SQL Server
模式或表空间
“使用SQL语句”选择“否”时,显示该参数,表示待抽取数据的模式或表空间名称。单击输入框后面的按钮可进入模式选择界面,用户也可以直接输入模式或表空间名称。
如果选择界面没有待选择的模式或表空间,请确认对应连接里的帐号是否有元数据查询的权限。
schema
Where子句
该参数适用于整库迁移中的所有子表,配置子表抽取范围的Where子句,不配置时抽取整表。如果待迁移的表中没有Where子句的字段,则迁移失败。
该参数支持配置为时间宏变量,实现抽取指定日期的数据,详细说明请参见Where子句。
age > 18 and age <= 60
Elasticsearch
索引
待抽取数据的索引,支持配置为通配符,一次迁移多个符合通配符条件的索引。例如这里配置为cdm*时,CDM将迁移所有名称为cdm开头的索引:cdm01、cdmB3、cdm_45……
如果源端配置为迁移多个索引时,目的端的作业参数“索引”将不允许配置。
cdm*
MongoDB
数据库名称
待迁移的数据库名称,源连接中配置的用户需要拥有读取该数据库的权限。
mongodb
- 配置目的端作业参数,根据待导入数据的云服务配置对应参数,如表3所示。
表3 目的端作业参数 目的端云服务
目的端参数
参数说明
- MRS(Hive)
- 云数据库 MySQL
模式或表空间
待写入数据的数据库名称。
自动创表
写入表时,用户选择的操作:- 不自动创建:CDM不自动建表。
- 不存在时创建:当目的端数据库没有源端里的表时,CDM会自动创建表。
- 先删除后创建:当目的端存在与源端重名的表时,CDM先删除重名的表,再重新在目的端创建该表。
导入开始前
导入数据前,选择是否清除目的表的数据:- 不清除:写入数据前不清除目标表中数据,数据追加写入。
- 清除全部数据:写入数据前会清除目标表中数据。
- 清除部分数据:需要配置“where条件”参数,CDM根据条件选择性删除目标表的数据。
where条件
导入前根据条件删除目的表的数据,例如“age > 18 and age <= 60”。
云搜索服务
索引
写入数据到哪个索引。整库迁移多个索引时,这里的作业参数“索引”将不允许配置,CDM在目的端自动创建索引。
导入前清空数据
写入数据前,选择是否清除目标类型中数据。
数据仓库服务(DWS)
-
整库迁移到DWS时,目的端作业参数请参见配置关系数据库目的端参数。
对象存储服务(OBS)
-
整库迁移到OBS时,目的端作业参数请参见配置OBS目的端参数。
- 如果是关系型数据库整库迁移,则作业参数配置完成后,单击“下一步”会进入表的选择界面,您可以根据自己的需求选择迁移哪些表到目的端。
- 单击“下一步”配置任务参数。。各参数说明如表4所示。
表4 任务配置参数 参数
说明
取值样例
是否写入脏数据
选择是否记录脏数据,默认不记录脏数据。
是
脏数据写入连接
当“是否写入脏数据”为“是”才显示该参数。
脏数据要写入的连接,目前只支持写入到OBS连接。
obs_link
OBS桶
当“脏数据写入连接”为OBS类型的连接时,才显示该参数。
写入脏数据的OBS桶的名称。
dirtydata
脏数据目录
“是否写入脏数据”选择为“是”时,该参数才显示。
OBS上存储脏数据的目录,只有在配置了脏数据目录的情况下才会记录脏数据。
用户可以进入脏数据目录,查看作业执行过程中处理失败的数据或者被清洗过滤掉的数据,针对该数据可以查看源数据中哪些数据不符合转换、清洗规则。
/user/dirtydir
单个分片的最大错误记录数
当“是否写入脏数据”为“是”才显示该参数。
单个map的错误记录超过设置的最大错误记录数则任务自动结束,已经导入的数据不支持回退。推荐使用临时表作为导入的目标表,待导入成功后再改名或合并到最终数据表。
0
- 单击“保存”,或者“保存并运行”。
作业任务启动后,每个待迁移的表都会生成一个子任务,单击整库迁移的作业名称,可查看子任务列表。
