更新时间:2024-12-02 GMT+08:00

新建整库迁移作业

操作场景

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

整库迁移作业每次运行,会根据整库作业的配置重建子任务,不支持修改子任务后再重新运行主作业。

支持整库迁移的数据源请参见支持的数据源

约束限制

配置源端和目的端参数时,字段名不可包含&和%。

前提条件

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

操作步骤

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

    图1 创建整库迁移作业

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

    表1 源端作业参数

    源端数据库类型

    源端参数

    参数说明

    取值样例

    • DWS
    • MySQL
    • PostgreSQL
    • SQL Server
    • Oracle
    • SAP HANA

    模式或表空间

    “使用SQL语句”选择“否”时,显示该参数,表示待抽取数据的模式或表空间名称。单击输入框后面的按钮可进入模式选择界面,用户也可以直接输入模式或表空间名称。

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

    schema

    Where子句

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

    该参数支持配置为时间宏变量,实现抽取指定日期的数据,详细说明请参见关系数据库增量迁移

    age > 18 and age <= 60

    分区字段是否允许空值

    选择分区字段是否允许空值。

    Hive

    数据库名称

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

    hivedb

    HBase

    CloudTable

    起始时间

    起始时间(包含该值)。格式为'yyyy-MM-dd hh:mm:ss', 支持dateformat时间宏变量函数。

    例如:"2017-12-31 20:00:00" 或 "${dateformat(yyyy-MM-dd, -1, DAY)} 02:00:00" 或 ${dateformat(yyyy-MM-dd HH:mm:ss, -1, DAY)}

    "2017-12-31 20:00:00"

    终止时间

    终止时间(不包含该值)。格式为'yyyy-MM-dd hh:mm:ss', 支持dateformat时间宏变量函数。

    例如:"2018-01-01 20:00:00" 或 "${dateformat(yyyy-MM-dd, -1, DAY)} 02:00:00" 或 "${dateformat(yyyy-MM-dd HH:mm:ss, -1, DAY)}"

    "2018-01-01 20:00:00"

    Redis

    键过滤字符

    填写键过滤字符后,将迁移符合条件的键。

    例如:a*, 迁移所有: *

    a*

    DDS

    数据库名称

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

    ddsdb

    查询筛选

    创建用于匹配文档的筛选器。

    例如:{HTTPStatusCode:{$gt:"400",$lt:"500"},HTTPMethod:"GET"}。

    -

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

    表2 目的端作业参数

    目的端数据库类型

    目的端参数

    参数说明

    取值样例

    • 云数据库MySQL
    • 云数据库PostgreSQL
    • 云数据库SQL Server

    -

    整库迁移到RDS关系数据库时,目的端作业参数请参见配置MySQL/SQL Server/PostgreSQL目的端参数

    schema

    DWS

    -

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

    -

    MRS Hive

    -

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

    hivedb

    MRS HBase

    CloudTable

    -

    整库迁移到MRS HBase或CloudTable时,目的端作业参数请参见配置HBase/CloudTable目的端参数

    Redis

    清除数据库

    在导入数据前清除数据库数据。

    DDS

    数据库名称

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

    mongodb

    迁移行为

    选择新增或替换。

    -

  5. 如果是关系型数据库整库迁移,则作业参数配置完成后,单击“下一步”会进入表的选择界面,选择的目的库表名须与源端库表名保持一致。如源端表名为test,则目的端表名只能选择test。

    图2 字段映射关系

  6. 单击“下一步”配置任务参数。

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

    参数

    说明

    取值样例

    同时执行的表个数

    抽取时并发执行的表的数量。

    3

    抽取并发数

    当前任务从源端进行读取最大线程数。

    说明:

    由于数据源限制,实际执行时并发的线程数可能小于等于此处配置的并发数,如CSS,ClickHouse数据源不支持多并发抽取。

    1

    是否写入脏数据

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

    脏数据写入连接

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

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

    obs_link

    OBS桶

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

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

    dirtydata

    脏数据目录

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

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

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

    /user/dirtydir

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

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

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

    0

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

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

Oracle整库迁移作业场景下,如果源端选择视图或无主键表,且目标端为hudi时,不支持自动建表。