文档首页 > > 用户指南> 作业管理> 整库迁移

整库迁移

分享
更新时间: 2019/11/05 GMT+08:00

操作场景

CDM支持在同构、异构数据源之间进行整库迁移,迁移原理与新建表/文件迁移作业相同,关系型数据库的每张表、Elasticsearch的每个类型、MongoDB的每个集合都会作为一个子任务并发执行。

批量数据迁移支持整库迁移的数据源如 表1所示。
表1 批量数据迁移支持整库迁移的数据源

源端数据类型

目的端数据类型

RDS for MySQL

MRS(Hive)

DWS

CSS

OBS

CloudTable

MySQL

×

×

PostgreSQL

×

×

Microsoft SQL Server

×

×

×

Oracle

×

×

Elasticsearch

×

×

×

×

×

MongoDB

×

×

×

×

×

HBase

×

×

×

×

×

源端的这些数据库可以是部署在本地数据中心,或在ECS上自建的数据库,也可以是第三方云的数据库服务。

自动建表时的字段类型映射

CDM迁移数据库时支持在目的端自动建表。CDM在数据仓库服务(Data Warehouse Service,简称DWS)中自动建表时,DWS的表与源表的字段类型映射关系如图1所示。例如使用CDM将Oracle整库迁移到DWS,CDM在DWS上自动建表,会将Oracle的NUMBER(3,0)字段映射到DWS的SMALLINT

图1 DWS端自动建表时的字段映射

前提条件

  • 新建连接
  • CDM集群与待迁移数据源可以正常通信。

操作步骤

  1. 登录CDM管理控制台
  2. 单击左侧导航上的“集群管理”,选择集群后的“作业管理”
  3. 单击整库迁移 > 新建作业,进入作业参数配置界面。

    图2 创建整库迁移作业

  4. 配置源端作业参数,根据待迁移的数据库类型配置对应参数,如表2所示。

    表2 源端作业参数

    源端数据库类型

    源端参数

    参数说明

    取值样例

    • Oracle
    • MySQL
    • PostgreSQL
    • Microsoft SQL Server

    模式或表空间

    待抽取数据的数据库名称。单击输入框后面的按钮可进入模式选择界面,用户也可以直接输入模式或表空间名称。

    如果选择界面没有待选择的模式或表空间,请确认对应连接里的帐号是否有元数据查询的权限。

    schema

    Where子句

    该参数适用于整库迁移中的所有子表,配置子表抽取范围的Where子句,不配置时抽取整表。如果待迁移的表中没有Where子句的字段,则迁移失败。

    该参数支持配置为时间宏变量,实现抽取指定日期的数据,详细说明请参见Where子句

    age > 18 and age <= 60

    Elasticsearch

    索引

    待抽取数据的索引,支持配置为通配符,一次迁移多个符合通配符条件的索引。例如这里配置为cdm*时,CDM将迁移所有名称为cdm开头的索引:cdm01、cdmB3、cdm_45……

    如果源端配置为迁移多个索引时,目的端的作业参数“索引”将不允许配置。

    cdm*

    MongoDB

    数据库名称

    待迁移的数据库名称,源连接中配置的用户需要拥有读取该数据库的权限。

    mongodb

  5. 配置目的端作业参数,根据待导入数据的云服务配置对应参数,如表3所示。

    表3 目的端作业参数

    目的端云服务

    目的端参数

    参数说明

    • MRS(Hive)
    • 云数据库 MySQL

    模式或表空间

    待写入数据的数据库名称。

    自动创表

    写入表时,用户选择的操作:
    • 不自动创建:CDM不自动建表。
    • 不存在时创建:当目的端数据库没有源端里的表时,CDM会自动创建表。
    • 先删除后创建:当目的端存在与源端重名的表时,CDM先删除重名的表,再重新在目的端创建该表。

    导入开始前

    导入数据前,选择是否清除目的表的数据:
    • 不清除:写入数据前不清除目标表中数据,数据追加写入。
    • 清除全部数据:写入数据前会清除目标表中数据。
    • 清除部分数据:需要配置“where条件”参数,CDM根据条件选择性删除目标表的数据。

    where条件

    导入前根据条件删除目的表的数据,例如“age > 18 and age <= 60”

    云搜索服务

    索引

    写入数据到哪个索引。整库迁移多个索引时,这里的作业参数“索引”将不允许配置,CDM在目的端自动创建索引。

    导入前清空数据

    写入数据前,选择是否清除目标类型中数据。

    数据仓库服务(DWS)

    -

    整库迁移到DWS时,目的端作业参数请参见配置关系数据库目的端参数

    对象存储服务(OBS)

    -

    整库迁移到OBS时,目的端作业参数请参见配置OBS目的端参数

  6. 如果是关系型数据库整库迁移,则作业参数配置完成后,单击“下一步”会进入表的选择界面,您可以根据自己的需求选择迁移哪些表到目的端。
  7. 单击“下一步”配置任务参数,单击“显示高级属性”展开可选参数。

    图3 任务参数
    各参数说明如 表4所示。
    表4 任务配置参数

    参数

    说明

    取值样例

    作业失败重试

    如果作业执行失败,可选择自动重试三次或者不重试。

    建议仅对文件类作业或启用了导入阶段表的数据库作业配置自动重试,避免自动重试重复写入数据导致数据不一致。

    不重试

    作业分组

    选择作业的分组,默认分组为“DEFAULT”。在CDM“作业管理”界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。

    DEFAULT

    是否定时执行

    如果选择“是”,可以配置作业自动启动的时间、重复周期和有效期,具体请参见配置定时任务

    抽取并发数

    设置同时执行的抽取任务数,一般保持默认即可。

    1

    加载(写入)并发数

    加载(写入)时并发执行的Loader数量。

    仅当HBase或Hive作为目的数据源时该参数才显示。

    3

    是否写入脏数据

    选择是否记录脏数据,默认不记录脏数据。

    脏数据写入连接

    “是否写入脏数据”“是”才显示该参数。

    脏数据要写入的连接,目前只支持写入到OBS连接。

    obs_link

    OBS桶

    “脏数据写入连接”为OBS类型的连接时,才显示该参数。

    写入脏数据的OBS桶的名称。

    dirtydata

    脏数据目录

    “是否写入脏数据”选择为“是”时,该参数才显示。

    OBS上存储脏数据的目录,只有在配置了脏数据目录的情况下才会记录脏数据。

    用户可以进入脏数据目录,查看作业执行过程中处理失败的数据或者被清洗过滤掉的数据,针对该数据可以查看源数据中哪些数据不符合转换、清洗规则。

    /user/dirtydir

    单个分片的最大错误记录数

    “是否写入脏数据”“是”才显示该参数。

    单个map的错误记录超过设置的最大错误记录数则任务自动结束,已经导入的数据不支持回退。推荐使用临时表作为导入的目标表,待导入成功后再改名或合并到最终数据表。

    0

    作业运行完是否删除

    选择作业执行后的操作:
    • 不删除:作业执行完不删除。
    • 成功后删除:仅作业执行成功时删除该作业,适合海量一次性作业。
    • 删除:作业执行完删除该作业,不管执行成功或失败都会删除。

    不删除

  8. 单击“保存”,或者“保存并运行”

    作业任务启动后,每个待迁移的表都会生成一个子任务,单击整库迁移的作业名称,可查看子任务列表。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区