云数据迁移 CDM
云数据迁移 CDM
- 最新动态
- 功能总览
- 产品介绍
- 快速入门
-
用户指南
- IAM权限管理
- 支持的数据源
- 创建并管理CDM集群
-
在CDM集群中创建连接
- 创建CDM与数据源之间的连接
-
配置连接参数
- OBS连接参数说明
- PostgreSQL/SQLServer连接参数说明
- 数据仓库服务(DWS)连接参数说明
- 云数据库MySQL/MySQL数据库连接参数说明
- Oracle数据库连接参数说明
- DLI连接参数说明
- Hive连接参数说明
- HBase连接参数说明
- HDFS连接参数说明
- FTP/SFTP连接参数说明
- Redis连接参数说明
- DDS连接参数说明
- CloudTable连接参数说明
- MongoDB连接参数说明
- Cassandra连接参数说明
- DIS连接参数说明
- Kafka连接参数说明
- DMS Kafka连接参数说明
- 云搜索服务(CSS)连接参数说明
- Elasticsearch连接参数说明
- 达梦数据库 DM连接参数说明
- SAP HANA连接参数说明
- 分库连接参数说明
- MRS Hudi连接参数说明
- MRS ClickHouse连接参数说明
- 神通(ST)连接参数说明
- LogHub(SLS)连接参数说明
- Doris连接参数说明
- YASHAN连接参数说明
- 上传CDM连接驱动
- 新建Hadoop集群配置
-
在CDM集群中创建作业
- 新建表/文件迁移作业
- 新建整库迁移作业
-
配置CDM作业源端参数
- 配置OBS源端参数
- 配置HDFS源端参数
- 配置HBase/CloudTable源端参数
- 配置Hive源端参数
- 配置DLI源端参数
- 配置FTP/SFTP源端参数
- 配置HTTP源端参数
- 配置PostgreSQL/SQL Server源端参数
- 配置DWS源端参数
- 配置SAP HANA源端参数
- 配置MySQL源端参数
- 配置Oracle源端参数
- 配置分库源端参数
- 配置MongoDB/DDS源端参数
- 配置Redis源端参数
- 配置DIS源端参数
- 配置Kafka/DMS Kafka源端参数
- 配置Elasticsearch/云搜索服务源端参数
- 配置MRS Hudi源端参数
- 配置MRS ClickHouse源端参数
- 配置达梦数据库 DM源端参数
- 配置LogHub(SLS)源端参数
- 配置神通(ST)源端参数
- 配置Doris源端参数
- 配置YASHAN源端参数
- 配置CDM作业目的端参数
- 配置CDM作业字段映射
- 配置CDM作业定时任务
- CDM作业配置管理
- 管理单个CDM作业
- 批量管理CDM作业
- 查看审计日志
- 关键操作指导
- 使用教程
- 最佳实践
- 性能白皮书
- 安全白皮书
- API参考
- SDK参考
-
常见问题
- 通用类
-
功能类
- 是否支持增量迁移?
- 是否支持字段转换?
- Hadoop类型的数据源进行数据迁移时,建议使用的组件版本有哪些?
- 数据源为Hive时支持哪些数据格式?
- 是否支持同步作业到其他集群?
- 是否支持批量创建作业?
- 是否支持批量调度作业?
- 如何备份CDM作业?
- 如何解决HANA集群只有部分节点和CDM集群网络互通?
- 如何使用Java调用CDM的Rest API创建数据迁移作业?
- 如何将云下内网或第三方云上的私网与CDM连通?
- CDM是否支持参数或者变量?
- CDM迁移作业的抽取并发数应该如何设置?
- CDM是否支持动态数据实时迁移功能?
- CDM是否支持集群关机功能?
- 如何使用表达式方式获取当前时间?
- 在创建迁移作业时,where语句参数中的时间格式是怎样的?
- CDM作业可以将源表中的字段注释迁移到目标端表吗?
- 如何查询数据连接创建人?
-
故障处理类
- 日志提示解析日期格式失败时怎么处理?
- 字段映射界面无法显示所有列怎么处理?
- CDM迁移数据到DWS时如何选取分布列?
- 迁移到DWS时出现value too long for type character varying怎么处理?
- OBS导入数据到SQL Server时出现Unable to execute the SQL statement怎么处理?
- 获取集群列表为空/没有权限访问/操作时报当前策略不允许执行?
- Oracle迁移到DWS报错ORA-01555
- MongoDB连接迁移失败时如何处理?
- Hive迁移作业长时间卡顿怎么办?
- 使用CDM迁移数据由于字段类型映射不匹配导致报错怎么处理?
- MySQL迁移时报错“JDBC连接超时”怎么办?
- 创建了Hive到DWS类型的连接,进行CDM传输任务失败时如何处理?
- 如何使用CDM服务将MySQL的数据导出成SQL文件,然后上传到OBS桶?
- 如何处理CDM从OBS迁移数据到DLI出现迁移中断失败的问题?
- 报错“配置项[linkConfig.createBackendLinks]不存在”或“配置项 [throttlingConfig.concurrentSubJobs] 不存在怎么办”?
- 新建MRS Hive连接时,提示:CORE_0031:Connect time out. (Cdm.0523) 怎么解决?
- 迁移时已选择表不存在时自动创表,提示“CDM not support auto create empty table with no column”怎么处理?
- 创建Oracle关系型数据库迁移作业时,无法获取模式名怎么处理?
- MySQL迁移时报错:invalid input syntax for integer: "true"
- 作业源端是Oracle时,运行时间过长报snapshot too old怎么解决?
- 整库迁移到Hive,报错Identifier name is too long如何处理?
- 迁移数据到DLI时有数据丢失怎么处理?
- 创建Oracle数据连接测试连通性成功,连接管理界面中测试连接失败。是什么原因?
- 作业配置表不存在时自动创建,目的端字段映射不出来怎么处理?
- 作业从旧集群导出,再导入到新的集群失败怎么解决?
- 迁移HDFS文件,报错无法获取块怎么处理?
- 创建MRS数据连接时测试连通性报下载配置文件失败错误怎么处理?
- CDM作业管理访问不了,提示网络或服务器访问异常怎么处理?
- 通过CDM从OBS迁移数据到DLI,同样的作业在新版本集群迁移失败?
- CDM迁移DWS数据报错Read timedout怎么处理?
- CDM集群Hive连接无法查询库和表的内容
- 创建FusionInsight HDFS连接报错get filesystem怎么解决?
- Mysql导入数据到DLI,快执行完时失败了提示Invoke DLI service api failed错误怎么解决?
- 作业配置添加字段,MongoDB字段映射存在问题
- DLI外表(OBS文件)迁移DWS某字段转义,带有“\”
- 执行Postgresql-to-Hive迁移作业报错“Error occurs during loader run”
- 迁移Mysql到DWS报错“Lost connection to MySQL server during query”怎么处理?
- 迁移MySql到DLI字段类型转换报错For input string:"false"怎么处理?
- 迁移MySql到DWS,TINYINT类型迁移报错
- 数据迁移前后数据量不一致是什么问题?
- 创建源数据连接,一直报错用户名和密码错误,但是实际填的没有错
- 数据库写入OBS场景,表中小驼峰命名字段,提示字段不存在
- CSV数据类型插入MySQL报错invalid utf-8 charater string ''
- 定时任务失败,检查连接器连接存在问题
- 脏数据导致CSV数据类型问题插入MySQL报错
- 写ES报timeout waiting for connection from pool错误怎么解决?
- Oracle迁移到DWS报错ORA-01555
- FTP测试连通性失败,报服务器内部错误怎么解决?
- CDM连接RDS-Mysql ,除root用户外,其他用户都报错,怎么办?
- MRS Hive,MRS Kafka,MRS Hudi数据源创建连接时IP长度校验不通过,如何处理?
- CDM转换空字符串表达式StringUtils.defaultIfEmpty不生效怎么解决?
- 当Hudi表属性和hoodie.properties文件中分区信息不一致时,会导致数据写入失败怎么解决?
- 当MySQL、Oracle、PostgreSQL作为源端时,如果作业报错“Read timed out”怎么处理?
- RDS-Mysql和开源Mysql对于date类型的范围不一致,可能导致date数据转换异常
- 通过json方式导入的作业,sql server迁移到hive,执行作业报错
- Hudi源端的作业长时间处于BOOTING状态怎么解决?
- Hudi源端作业,读Hudi作业字段映射多了一列col,作业执行失败怎么处理?
- Hudi目的端的作业自动建表报错:schema不匹配,建表失败怎么办?
- Hudi目的端的作业失败,日志报错Read Timeout怎么解决?
- Hudi目的端的作业执行卡Running,读取行数写入行数相等且不再增加怎么解决?
- Hudi目的端的作业执行卡Running,数据写入行数一直显示为0如何处理?
- Hudi目的端的作业执行Spark SQL写入Hudi失败怎么办?
- Hudi目的端的作业执行过程中,由于源端连接闪断、超时或主动终止连接导致作业执行失败怎么处理?
- 文档下载
- 通用参考
更新时间:2024-08-05 GMT+08:00
链接复制成功!
约束与限制
CDM系统级限制和约束
- DataArts Studio实例赠送的数据集成集群,由于规格限制,仅用于测试业务、数据连接代理场景。
- 用于运行数据迁移作业的其他规格CDM集群可以在DataArts Studio控制台以增量包的形式购买,也可以在云数据迁移CDM服务控制台直接购买。二者差异体现在如下方面:
- 套餐计费:在DataArts Studio控制台购买的CDM集群,套餐计费时仅支持在DataArts Studio控制台购买的套餐包;在CDM控制台购买的CDM集群,套餐计费仅支持在云数据迁移CDM服务控制台购买的折扣套餐。
- 权限控制:在DataArts Studio控制台购买的CDM集群,按照DataArts Studio的权限体系进行权限管理;在CDM控制台购买的CDM集群,按照云数据迁移CDM服务的权限体系进行权限管理。
- 使用场景:在DataArts Studio控制台购买的CDM集群按工作空间隔离,需要在关联的工作空间使用;在CDM控制台购买的CDM集群,不支持DataArts Studio工作空间级别的资源隔离,所有DataArts Studio工作空间均可使用。
- 集群创建好以后不支持修改规格,如果需要使用更高规格的,需要重新创建一个集群。
- CDM集群为ARM或X86版本,依赖于底层资源的架构。
- CDM暂不支持控制迁移数据的速度,请避免在业务高峰期执行迁移数据的任务。
- 在迁移数据时CDM会对数据源端产生压力。建议创建新的数据库账号用于数据迁移,并配置账号策略用于以限制迁移对数据源端的资源消耗。例如可配置当CPU使用率超30%就清理该账号下的连接,从而避免影响业务。
- 当前CDM集群cdm.large实例规格网卡的基准/最大带宽为0.8/3 Gbps,单个实例一天传输数据量的理论极限值在8TB左右。同理,cdm.xlarge实例规格网卡的基准/最大带宽为4/10 Gbps,理论极限值在40TB左右;cdm.4xlarge实例规格网卡的基准/最大带宽为36/40 Gbps,理论极限值在360TB左右。对传输速度有要求的情况下可以使用多个数据集成实例实现。
上述数据量为理论极限值,实际传输数据量受数据源类型、源和目的数据源读写性能、带宽等多方面因素制约,实测cdm.large规格最大可达到约8TB每天(大文件迁移到OBS场景)。推荐用户在正式迁移前先用小数据量实测进行速度摸底。
- 迁移文件或对象时支持文件级增量迁移(通过配置跳过重复文件实现),但不支持断点续传。
例如要迁移3个文件,第2个文件迁移到一半时由于网络原因失败,再次启动迁移任务时,会跳过第1个文件,从第2个文件开始重新传,但不能从第2个文件失败的位置重新传。
- 文件迁移时,单个任务支持千万数量的文件,如果待迁移目录下文件过多,建议拆分到不同目录并创建多个任务。
- 用户在CDM上配置的连接和作业支持导出到本地保存,考虑到密码的安全性,CDM不会将对应数据源的连接密码导出。因此在将作业配置重新导入到CDM前,需要手工编辑导出的JSON文件补充密码或在导入窗口配置密码。
- 不支持集群自动升级到新版本,需要用户通过作业的导出和导入功能,实现升级到新版本。
- 在无OBS的场景下,CDM系统不会自动备份用户的作业配置,需要用户通过作业的导出功能进行备份。
- 如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。
- CDM迁移,当目的端为DWS和NewSQL的时候,不支持将源端的主键和唯一索引等约束一起迁移过去。
- CDM迁移作业时,需确保两个集群版本的JSON文件格式保持一致,才可以从将源集群的作业导入到目标集群。
- 作业运行过程中,任务异常中断,目标端已写入的部分数据不会清理,需手动清理。
- 单文件传输大小不超过1TB。
数据库迁移通用限制和约束
- CDM以批量迁移为主,仅支持有限的数据库增量迁移,不支持数据库实时增量迁移,推荐使用数据复制服务(DRS)来实现数据库增量迁移到RDS。
- CDM支持的数据库整库迁移,仅支持数据表迁移,不支持存储过程、触发器、函数、视图等数据库对象迁移。
CDM仅适用于一次性将数据库迁移到云上的场景,包括同构数据库迁移和异构数据库迁移,不适合数据同步场景,比如容灾、实时同步。
- CDM迁移数据库整库或数据表失败时,已经导入到目标表中的数据不会自动回滚,对于需要事务模式迁移的用户,可以配置“先导入到阶段表”参数,实现迁移失败时数据回滚。
极端情况下,可能存在创建的阶段表或临时表无法自动删除,也需要用户手工清理(阶段表的表名以“_cdm_stage”结尾,例如:cdmtet_cdm_stage)。
- CDM访问用户本地数据中心数据源时(例如本地自建的MySQL数据库),需要用户的数据源可支持Internet公网访问,并为CDM集群实例绑定弹性IP。这种方式下安全实践是:本地数据源通过防火墙或安全策略仅允许CDM弹性IP访问。
- 仅支持常用的数据类型,字符串、数字、日期,对象类型有限支持,如果对象过大会出现无法迁移的问题。
- 仅支持数据库字符集为GBK和UTF-8。
- 字段名不可包含&和%。
- jdbc2hive,hive2jdbc整库迁移的实现机制就是按字段名称映射的,不支持字段名称不一致的迁移场景。
关系数据库迁移权限配置
常见关系数据库迁移需要的最小权限级:
- MySQL:INFORMATION_SCHEMA库的读权限,以及对数据表的读权限。
- Oracle:需要该用户有resource角色,并在tablespace下有数据表的select权限。
- 达梦:具有该schema下select any table的权限。
- DWS:需要表的schema usage权限和数据表的查询权限。
- SQL Server:用户需要有sysadmin权限。
- PostgreSQL:角色拥有数据库下schema下表的select权限。
FusionInsight HD和Apache Hadoop数据源约束
FusionInsight HD和Apache Hadoop数据源在用户本地数据中心部署时,由于读写Hadoop文件需要访问集群的所有节点,需要为每个节点都放通网络访问。
推荐使用云专线服务,解决网络访问的同时,还可以提升迁移速度。
数据仓库服务(DWS)数据源约束
- DWS主键或表只有一个字段时,要求字段类型必须是如下常用的字符串、数值、日期类型。从其他数据库迁移到DWS时,如果选择自动建表,主键必须为以下类型,未设置主键的情况下至少要有一个字段是以下类型,否则会无法创建表导致CDM作业失败。
- INTEGER TYPES:TINYINT,SMALLINT,INT,BIGINT,NUMERIC/DECIMAL
- CHARACTER TYPES:CHAR,BPCHAR,VARCHAR,VARCHAR2,NVARCHAR2,TEXT
- DATA/TIME TYPES:DATE,TIME,TIMETZ,TIMESTAMP,TIMESTAMPTZ,INTERVAL,SMALLDATETIME
2.9.1.200及之前版本的集群,DWS源端暂不支持NVARCHAR2数据类型。
- DWS字符类型字段认为空字符串('')是空值,有非空约束的字段无法插入空字符串(''),这点与MySQL行为不一致,MySQL不认为空字符串('')是空值。从MySQL迁移到DWS时,可能会因为上述原因导致迁移失败。
- 使用GDS模式快速导入数据到DWS时,需要配置相关安全组或防火墙策略,允许DWS/LibrA的数据节点访问CDM IP地址的25000端口。
- 使用GDS模式导入数据到DWS时,CDM会自动创建外表(foreign table)用于数据导入,表名以UUID结尾(例如:cdmtest_aecf3f8n0z73dsl72d0d1dk4lcir8cd),作业失败正常会自动删除,极端情况下可能需要用户手工清理。
对象存储服务(OBS)数据源约束
DLI数据源约束
- 使用CDM服务迁移数据到DLI时,当前用户需拥有OBS的读取权限。
- 目的端为DLI数据源时,抽取并发数建议配置为1,否则可能会导致写入失败。
Oracle数据源约束
不支持Oracle实时增量数据同步。
分布式缓存服务(DCS)和Redis数据源约束
- 第三方云的Redis服务无法支持作为源端。如果是用户在本地数据中心或ECS上自行搭建的Redis支持作为源端或目的端。
- 仅支持Hash和String两种数据格式。
文档数据库服务(DDS)和MongoDB数据源约束
从MongoDB、DDS迁移数据时,CDM会读取集合的首行数据作为字段列表样例,如果首行数据未包含该集合的所有字段,用户需要自己手工添加字段。
云搜索服务和Elasticsearch数据源约束
- CDM支持自动创建索引和类型,索引和类型名称只能全部小写,不能有大写。
- 索引下的字段类型创建后不能修改,只能创建新字段。
如果一定要修改字段类型,需要创建新索引或到Kibana上用Elasticsearch命令删除当前索引重新创建(数据也会删除)。
- CDM自动创建的索引,字段类型为date时,要求数据格式为“yyyy-MM-dd HH:mm:ss.SSS Z”,即“2018-08-08 08:08:08.888 +08:00”。
迁移数据到云搜索服务时如果date字段的原始数据不满足格式要求,可以通过CDM的字段转换功能转换为上述格式。
数据接入服务(DIS)和Kafka数据源约束
- 消息体中的数据是一条类似CSV格式的记录,可以支持多种分隔符。不支持二进制格式或其他格式的消息内容解析。
- 设置为长久运行的任务,如果DIS系统发生中断,任务也会失败结束。
- 迁移作业源端为MRS Kafka时,字段映射不支持自定义字段。
- 迁移作业源端为DMS kafka时,字段映射支持自定义字段。
表格存储服务(CloudTable)和HBase数据源约束
- CloudTable或HBase作为源端时,CDM会读取表的首行数据作为字段列表样例,如果首行数据未包含该表的所有字段,用户需要自己手工添加字段。
- 由于HBase的无Schema技术特点,CDM无法获知数据类型,如果数据内容是使用二进制格式存储的,CDM会无法解析。
Hive数据源约束
- Hive中使用Parquet格式存储时间戳数据时,时间戳的精度为纳秒级别(即精确到毫微秒),即2023-03-27 00:00:00.000。当源端数据精度大于纳秒级别时,字段映射时会对数据进行截取。例如源端数据为2023-03-27 00:00:00.12345,目的端数据会被截取为2023-03-27 00:00:00.123。
- Hive作为迁移的目的时,如果存储格式为Textfile,在Hive创建表的语句中需要显式指定分隔符。例如:
CREATE TABLE csv_tbl( smallint_value smallint, tinyint_value tinyint, int_value int, bigint_value bigint, float_value float, double_value double, decimal_value decimal(9, 7), timestmamp_value timestamp, date_value date, varchar_value varchar(100), string_value string, char_value char(20), boolean_value boolean, binary_value binary, varchar_null varchar(100), string_null string, char_null char(20), int_null int ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = "\t", "quoteChar" = "'", "escapeChar" = "\\" ) STORED AS TEXTFILE;