GaussDB for DWS 数据融合系列第一期:云端数据接入(CDM)
概述
云数据迁移服务(Cloud Data Migration,简称CDM),可以将其他数据源(例如MySQL)的数据迁移到GaussDB(DWS) 集群的数据库中。
GaussDB(DWS)提供了灵活的数据入库方式,可以将多种数据源的数据导入到GaussDB(DWS)中,如图1所示。各导入方式具有不同的特点,如表1所示,用户可以根据其特点自行选择。建议用户配合云数据迁移(Cloud Data Migration,简称CDM)、数据接入服务(Data Ingestion Service,简称DIS)和数据湖工厂(Data Lake Factory,简称DLF)一起使用,CDM用于批量数据迁移,DIS用于流数据接入,DLF可以对整个ETL过程进行编排调度,同时提供可视化的开发环境。
导入方式:
数据导入方式说明:
数据导入方式 |
数据源 |
说明 |
优势 |
OBS |
支持将存储在OBS上的TXT、CSV、ORC及CARBONDATA格式的数据并行导入到GaussDB(DWS),支持导入后查询数据,也支持远程读OBS上的数据。 GaussDB(DWS)优先推荐的导入方式。 |
并行拉取方式,性能好,横向扩展。 |
|
Servers(即远端服务器) |
使用GaussDB(DWS)提供的GDS工具,利用多DN并行的方式,将数据从远端服务器导入到GaussDB(DWS)。这种方式导入效率高,适用于大批量数据入库。 |
||
MRS(HDFS) |
配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从MRS的HDFS中读取到GaussDB(DWS)。 |
并行拉取方式,性能好,横向扩展。 |
|
数据库、NoSQL、文件系统、大数据平台 |
CDM提供同构/异构数据源之间批量数据迁移的功能,帮助您实现从多种类型的数据源迁移数据到GaussDB(DWS)。CDM在迁移数据到GaussDB(DWS)时,采用的是Copy方式和GDS并行导入方式。 |
数据源丰富,操作简单。 |
|
流数据 |
可以将流式数据从DIS通道周期性导入到GaussDB(DWS)集群的数据库中。导入GaussDB(DWS)前数据临时存储在OBS,待转储GaussDB(DWS)完成后删除OBS上的临时存储数据。 |
准实时入库。 |
|
第三方ETL工具 |
数据库、NoSQL、文件系统、大数据平台 |
请参考第三方ETL工具的相关文档。 GaussDB(DWS)提供了DSC工具,可以将Teradata/Oracle脚本迁移到GaussDB(DWS)。 |
通过OBS中转,数据源丰富,数据转换能力强。 |
- |
使用SQL客户端工具或JDBC/ODBC驱动连接GaussDB(DWS)数据库时,执行INSERT语句插入一行或多行数据,以及从指定表插入数据。 |
INSERT是最简单的一种数据写入方式,适合数据写入量不大,并发度不高的场景。 |
|
其他文件或数据库 |
使用Java语言开发应用程序时,通过调用JDBC驱动的CopyManager接口,从文件或其他数据库向GaussDB(DWS)写入数据。 |
从其他数据库直接写入GaussDB(DWS)的方式,具有业务数据无需落地成文件的优势。 |
|
本地文件 |
与直接使用SQL语句COPY不同,该命令读取/写入的文件只能是gsql客户端所在机器上的本地文件。 |
操作简单,适用于小批量数据入库。 |
场景介绍
- 本节介绍云数据迁移(Cloud Data Migration,以下简称CDM)的基础使用方法,通过使用CDM迁移本地MySQL数据库中的表,写入到数据仓库服务DWS的具体操作,帮助您了解、熟悉CDM服务,具体场景如图。
- CDM的基本使用流程如下:
创建集群
操作场景
用户首先需要创建CDM集群,来执行MySQL数据同步到DWS的任务。
前提条件
已获取DWS所在的区域、VPC、子网、安全组。
操作步骤
1. 登录CDM管理控制台。
2. 单击“购买云数据迁移服务”,进入创建CDM集群的界面,集群配置样例如下:
- 当前区域:选择CDM集群的区域,不同区域的资源之间内网不互通,这里必须选择与DWS所在区域一致。
- 可用区:指在同一区域下,电力、网络隔离的物理区域,可用区之内内网互通,不同可用区之间物理隔离。这里选择“可用区2”。
- 集群名称:集群名称在4位到64位之间,必须以字母开头,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符,例如:“cdm-aff1”。
- 版本:默认即可。
- 实例类型:用户按实际业务数据量选择实例规格,这里选择“cdm.medium”即可,适用大部分迁移场景。
- large:8核CPU、16G内存的虚拟机,最大带宽/基准带宽为3/0.8Gbps,能够并发执行的作业个数为20,适合单张表规模≥1000万条的场景。
- xlarge:16核CPU、32G内存的虚拟机,最大带宽/基准带宽为10/4Gbps,能够并发执行的作业个数为100,适合使用10GE高速带宽进行TB以上的数据量迁移。
- 4xlarge:64核CPU、128G内存的虚拟机,最大带宽/基准带宽为30/30Gbps,能够并发执行的作业个数为300。
- 虚拟私有云:即VPC(Virtual Private Cloud),这里必须选择与DWS相同的VPC。
- 子网:推荐与DWS的子网一致。
- 安全组:推荐与DWS的安全组一致。
- 这里所配置的子网、安全组也可以与DWS不一致,但是需要配置安全组规则,允许CDM集群能正常访问DWS。
- 其它参数保持默认即可。
3. 查看当前配置,确认无误后单击“立即购买”进入规格确认界面。
说明:集群创建好以后不支持修改规格,如果需要使用更高规格,需要重新创建。
4. 单击“提交申请”,系统开始自动创建CDM集群,在“集群管理”界面可查看创建进度。
说明:创建集群需要10~20分钟时间,如果您是首次创建CDM集群,只需要一分钟即可。
创建连接
连接说明
迁移本地MySQL数据库到数据仓库服务DWS前,需要创建2个连接:
- MySQL连接:CDM连接本地MySQL数据库。
- DWS连接:CDM连接DWS数据库。
- 由于CDM需要访问本地数据源,所以创建连接前,需先为CDM集群绑定弹性IP,CDM通过弹性IP访问MySQL数据库。
前提条件
- 用户本地的MySQL数据库已允许通过公网IP访问。
- 用户已拥有EIP配额。
- 已获取连接MySQL数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有MySQL数据库的读、写和删除权限。
- 用户已经拥有了DWS实例,已获取连接DWS数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有DWS数据库的读、写和删除权限。
创建MySQL连接
1. 登录CDM管理控制台。
2. 单击左侧导航上的“集群管理”,找到步骤1:创建集群章节创建的集群“cdm-aff1”。
3. 单击该集群后的“绑定弹性IP”,选择并绑定弹性公网IP。
图1 绑定EIP
说明:如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
4. 单击CDM集群后的“作业管理”,进入作业管理界面,再选择“连接管理> 新建连接”,进入选择连接器类型的界面,如图2所示。
图2 选择连接器类型
5. 选择“MySQL”后单击“下一步”,配置MySQL连接的参数。
图3 创建MySQL连接
单击“显示高级属性”可查看更多可选参数,具体请参见配置关系数据库连接。这里保持默认,必填参数如表1所示。
参数名 |
说明 |
取值样例 |
名称 |
输入便于记忆和区分的连接名称。 |
mysqllink |
数据库服务器 |
MySQL数据库的IP地址或域名。 |
192.168.0.1 |
端口 |
MySQL数据库的端口。 |
3306 |
数据库名称 |
MySQL数据库的名称。 |
sqoop |
用户名 |
拥有MySQL数据库的读、写和删除权限的用户。 |
admin |
密码 |
用户的密码。 |
- |
使用Agent |
是否选择通过Agent从源端提取数据。 |
是 |
Agent |
单击“选择”,选择连接Agent中已创建的Agent。 |
- |
6. 单击“保存”回到连接管理界面。
说明:如果保存时出错,一般是由于MySQL数据库的安全设置问题,需要设置允许CDM集群的EIP访问MySQL数据库。
创建DWS连接
1. 在“连接管理”界面单击“新建连接”,连接器类型选择“数据仓库服务(DWS)”。
2. 单击“下一步”配置DWS连接参数,必填参数如表2所示,可选参数保持默认即可。
参数名 |
说明 |
取值样例 |
名称 |
输入便于记忆和区分的连接名称。 |
dwslink |
数据库服务器 |
DWS数据库的IP地址或域名。 |
192.168.0.3 |
端口 |
DWS数据库的端口。 |
8000 |
数据库名称 |
DWS数据库的名称。 |
db_demo |
用户名 |
拥有DWS数据库的读、写和删除权限的用户。 |
dbadmin |
密码 |
用户的密码。 |
- |
使用Agent |
是否选择通过Agent从源端提取数据。 |
是 |
Agent |
单击“选择”,选择连接Agent中已创建的Agent。 |
- |
导入模式 |
COPY模式:将源数据经过DWS管理节点后拷贝到数据节点。如果需要通过Internet访问DWS,只能使用COPY模式。 |
COPY |
3. 单击“保存”完成创建连接。
创建并执行作业
操作场景
创建CDM迁移数据表的作业,执行从本地MySQL数据库复制表到DWS的任务。
操作步骤
1. 在集群管理界面,找到步骤1:创建集群章节创建的集群“cdm-aff1”。
2. 单击该CDM集群后的“作业管理”,进入作业管理界面。
3. 选择“表/文件迁移> 新建作业”,配置作业基本信息。
图1 新建作业
- 作业名称:输入便于记忆、区分的作业名称,例如:“mysql2dws”。
- 源端作业配置
- 源连接名称:选择步骤2:创建连接章节中创建的MySQL连接“mysqllink”。
- 使用SQL语句:选择“否”。
- 模式或表空间:选择从MySQL的哪个数据库导出表。
- 表名:选择导出哪张表。
- 其它可选参数保持默认即可,详细说明可参见配置关系数据库源端参数。
- 目的端作业配置
- 目的连接名称:选择步骤2:创建连接章节中创建的DWS连接“dwslink”。
- 模式或表空间:选择导入到DWS的哪个数据库。
- 自动创表:这里选择“不存在时创建”,当下面“表名”参数中配置的表不存在时,CDM会自动在DWS数据库中创建该表。
- 表名:选择导入到DWS数据库的哪张表。
- 其他可选参数保持默认即可,详细说明可参见配置关系数据库目的端参数。
4. 单击“下一步”进入字段映射界面,CDM会自动匹配源端和目的端的数据表字段,需用户检查字段映射关系是否正确。
- 如果字段映射关系不正确,用户单击字段所在行选中后,按住鼠标左键可拖拽字段来调整映射关系。
- 导入到DWS时需要手动选择DWS的分布列,建议按如下顺序选取:
- 有主键可以使用主键作为分布列。
- 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
- 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。
- 如果需要转换源端字段内容,可在该步骤配置,具体操作请参见字段转换,这里选择不进行字段转换。
图2 字段映射
5. 单击“下一步”配置任务参数,一般情况下全部保持默认即可。
该步骤用户可以配置如下可选功能:
- 作业失败重试:如果作业执行失败,可选择是否自动重试,这里保持默认值“不重试”。
- 作业分组:选择作业所属的分组,默认分组为“DEFAULT”。在CDM“作业管理”界面,支持作业分组显示、按组批量启动作业、按分组导出作业等操作。
- 是否定时执行:如果需要配置作业定时自动执行,请参见配置定时任务。这里保持默认值“否”。
- 抽取并发数:设置同时执行的抽取任务数。这里保持默认值“1”。
- 是否写入脏数据:如果需要将作业执行过程中处理失败的数据、或者被清洗过滤掉的数据写入OBS中,以便后面查看,可通过该参数配置,写入脏数据前需要先配置好OBS连接。这里保持默认值“否”即可,不记录脏数据。
- 作业运行完是否删除:这里保持默认值“不删除”。
6. 单击“保存并运行”,CDM立即开始执行作业。
说明:如果运行作业失败,日志提示如下错误:SQL语句无法执行。ERROR: value too long for type character varying(7) Where: COPY dws_city, line 1, column name: "广州市"。原因:DWS表的字符字段长度不够。这是因为MySQL和华为云DWS存储中文时编码不一样,所需的长度也不一样,一个中文字符在UTF-8编码下可能要占3个字节。解决方法:在3新建作业时选择自动创表,高级属性参数“扩大字符字段长度”选择“是”,再重新执行作业。这样CDM在DWS中自动创表时,会将字符类型的字段长度设置为原表的3倍。
查看作业运行结果
操作场景
作业完成后,可以查看作业执行结果及最近90天内的历史信息,包括写入行数、读取行数、写入字节、写入文件数和日志等信息。
操作步骤
1. 在集群管理界面,找到步骤1:创建集群章节创建的集群“cdm-aff1”。
2. 单击该CDM集群后的“作业管理”,进入作业管理界面。
3. 找到步骤3:创建并执行作业章节创建的作业“mysql_dws”,查看该作业的执行状态。
说明:作业状态有New,Pending,Booting,Running,Failed,Succeeded。其中“Pending”表示正在等待系统调度该作业,“Booting”表示正在分析待迁移的数据。
4. 单击作业后面的“历史记录”,可查看作业的写入行数、读取行数、写入字节或写入文件数。
图1 查看历史记录
5. 在历史记录界面,再单击“日志”可查看作业执行的日志信息。
也可以在作业列表界面,选择“更多 > 日志”来查看该作业最近的一次日志。
图2 查看作业日志
- 点赞
- 收藏
- 关注作者
评论(0)