GaussDB for DWS 数据融合系列第一期:云端数据接入(CDM)

举报
chinawjb 发表于 2021/01/14 21:37:28 2021/01/14
【摘要】 GaussDB(DWS)提供了灵活的数据入库方式,可以将多种数据源的数据导入到GaussDB(DWS)中,如图1所示。各导入方式具有不同的特点,如表1所示,用户可以根据其特点自行选择。建议用户配合云数据迁移(Cloud Data Migration,简称CDM)、数据接入服务(Data Ingestion Service,简称DIS)和数据湖工厂(Data Lake Factory,简称DLF)

概述

        云数据迁移服务(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

支持将存储在OBS上的TXTCSVORCCARBONDATA格式的数据并行导入到GaussDB(DWS),支持导入后查询数据,也支持远程读OBS上的数据。

GaussDB(DWS)优先推荐的导入方式。

并行拉取方式,性能好,横向扩展。

使用GDS从远端服务器导入数据

Servers(即远端服务器)

使用GaussDB(DWS)提供的GDS工具,利用多DN并行的方式,将数据从远端服务器导入到GaussDB(DWS)。这种方式导入效率高,适用于大批量数据入库。

MRS导入数据到集群

MRSHDFS

配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从MRSHDFS中读取到GaussDB(DWS)

并行拉取方式,性能好,横向扩展。

使用CDM迁移数据到GaussDB(DWS)

数据库、NoSQL、文件系统、大数据平台

CDM提供同构/异构数据源之间批量数据迁移的功能,帮助您实现从多种类型的数据源迁移数据到GaussDB(DWS)CDM在迁移数据到GaussDB(DWS)时,采用的是Copy方式和GDS并行导入方式。

数据源丰富,操作简单。

DIS导入流式数据到GaussDB(DWS)

流数据

可以将流式数据从DIS通道周期性导入到GaussDB(DWS)集群的数据库中。导入GaussDB(DWS)前数据临时存储在OBS,待转储GaussDB(DWS)完成后删除OBS上的临时存储数据。

准实时入库。

第三方ETL工具

数据库、NoSQL、文件系统、大数据平台

请参考第三方ETL工具的相关文档。

GaussDB(DWS)提供了DSC工具,可以将Teradata/Oracle脚本迁移到GaussDB(DWS)

·         使用DSC工具迁移SQL脚本

·         使用Schema Convertor ToolMySQL迁移到DWS

通过OBS中转,数据源丰富,数据转换能力强。

通过INSERT语句直接写入数据

-

使用SQL客户端工具或JDBC/ODBC驱动连接GaussDB(DWS)数据库时,执行INSERT语句插入一行或多行数据,以及从指定表插入数据。

INSERT是最简单的一种数据写入方式,适合数据写入量不大,并发度不高的场景。

使用COPY FROM STDIN导入数据

其他文件或数据库

使用Java语言开发应用程序时,通过调用JDBC驱动的CopyManager接口,从文件或其他数据库向GaussDB(DWS)写入数据。

从其他数据库直接写入GaussDB(DWS)的方式,具有业务数据无需落地成文件的优势。

使用gsql元命令\copy导入数据

本地文件

与直接使用SQL语句COPY不同,该命令读取/写入的文件只能是gsql客户端所在机器上的本地文件。

操作简单,适用于小批量数据入库。

 

场景介绍

  • 本节介绍云数据迁移(Cloud Data Migration,以下简称CDM)的基础使用方法,通过使用CDM迁移本地MySQL数据库中的表,写入到数据仓库服务DWS的具体操作,帮助您了解、熟悉CDM服务,具体场景如

  • CDM的基本使用流程如下:
    1. 创建CDM集群
    2. 创建连接
    3. 创建并执行作业
    4. 查看作业运行结果
    5. 以完成数据迁移

创建集群

操作场景

用户首先需要创建CDM集群,来执行MySQL数据同步到DWS的任务。

前提条件

已获取DWS所在的区域、VPC、子网、安全组。

操作步骤

1. 登录CDM管理控制台

2. 单击购买云数据迁移服务,进入创建CDM集群的界面,集群配置样例如下:

  • 当前区域:选择CDM集群的区域,不同区域的资源之间内网不互通,这里必须选择与DWS所在区域一致。
  • 可用区:指在同一区域下,电力、网络隔离的物理区域,可用区之内内网互通,不同可用区之间物理隔离。这里选择可用区2”
  • 集群名称:集群名称在4位到64位之间,必须以字母开头,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符,例如:“cdm-aff1”
  • 版本:默认即可。
  • 实例类型:用户按实际业务数据量选择实例规格,这里选择“cdm.medium”即可,适用大部分迁移场景。
    • large8CPU16G内存的虚拟机,最大带宽/基准带宽为3/0.8Gbps,能够并发执行的作业个数为20,适合单张表规模≥1000万条的场景。
    • xlarge16CPU32G内存的虚拟机,最大带宽/基准带宽为10/4Gbps,能够并发执行的作业个数为100,适合使用10GE高速带宽进行TB以上的数据量迁移。
    • 4xlarge64CPU128G内存的虚拟机,最大带宽/基准带宽为30/30Gbps,能够并发执行的作业个数为300
  • 虚拟私有云:即VPCVirtual Private Cloud),这里必须选择与DWS相同的VPC
  • 子网:推荐与DWS的子网一致。
  • 安全组:推荐与DWS的安全组一致。
  • 这里所配置的子网、安全组也可以与DWS不一致,但是需要配置安全组规则,允许CDM集群能正常访问DWS
  • 其它参数保持默认即可。

3. 查看当前配置,确认无误后单击立即购买进入规格确认界面。

说明集群创建好以后不支持修改规格,如果需要使用更高规格,需要重新创建。

4. 单击提交申请,系统开始自动创建CDM集群,在集群管理界面可查看创建进度。

说明创建集群需要10~20分钟时间,如果您是首次创建CDM集群,只需要一分钟即可。

创建连接

连接说明

迁移本地MySQL数据库到数据仓库服务DWS前,需要创建2个连接:

  1. MySQL连接:CDM连接本地MySQL数据库。
  2. DWS连接:CDM连接DWS数据库。
  3. 由于CDM需要访问本地数据源,所以创建连接前,需先为CDM集群绑定弹性IPCDM通过弹性IP访问MySQL数据库。

前提条件

  • 用户本地的MySQL数据库已允许通过公网IP访问。
  • 用户已拥有EIP配额。
  • 已获取连接MySQL数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有MySQL数据库的读、写和删除权限。
  • 用户已经拥有了DWS实例,已获取连接DWS数据库的IP地址、端口、数据库名称、用户名、密码,且该用户拥有DWS数据库的读、写和删除权限。

创建MySQL连接

1. 登录CDM管理控制台

2. 单击左侧导航上的集群管理,找到步骤1:创建集群章节创建的集群“cdm-aff1”

3. 单击该集群后的绑定弹性IP”,选择并绑定弹性公网IP

绑定EIP

说明如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。

4. 单击CDM集群后的作业管理,进入作业管理界面,再选择连接管理新建连接,进入选择连接器类型的界面,如图2所示。

选择连接器类型

5. 选择“MySQL”后单击下一步,配置MySQL连接的参数。

创建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. 选择/文件迁移新建作业,配置作业基本信息。

新建作业

  • 作业名称:输入便于记忆、区分的作业名称,例如:“mysql2dws”
  • 源端作业配置
    • 源连接名称:选择步骤2:创建连接章节中创建的MySQL连接“mysqllink”
    • 使用SQL语句:选择
    • 模式或表空间:选择从MySQL的哪个数据库导出表。
    • 表名:选择导出哪张表。
    • 其它可选参数保持默认即可,详细说明可参见配置关系数据库源端参数
  • 目的端作业配置
    • 目的连接名称:选择步骤2:创建连接章节中创建的DWS连接“dwslink”
    • 模式或表空间:选择导入到DWS的哪个数据库。
    • 自动创表:这里选择不存在时创建,当下面表名参数中配置的表不存在时,CDM会自动在DWS数据库中创建该表。
    • 表名:选择导入到DWS数据库的哪张表。
    • 其他可选参数保持默认即可,详细说明可参见配置关系数据库目的端参数

4. 单击下一步进入字段映射界面,CDM会自动匹配源端和目的端的数据表字段,需用户检查字段映射关系是否正确。

  • 如果字段映射关系不正确,用户单击字段所在行选中后,按住鼠标左键可拖拽字段来调整映射关系。
  • 导入到DWS时需要手动选择DWS的分布列,建议按如下顺序选取:
  1. 有主键可以使用主键作为分布列。
  2. 多个数据段联合做主键的场景,建议设置所有主键作为分布列。
  3. 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。
  • 如果需要转换源端字段内容,可在该步骤配置,具体操作请参见字段转换,这里选择不进行字段转换。

字段映射

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”,查看该作业的执行状态。

说明作业状态有NewPendingBootingRunningFailedSucceeded其中“Pending”表示正在等待系统调度该作业,“Booting”表示正在分析待迁移的数据。

4. 单击作业后面的历史记录,可查看作业的写入行数、读取行数、写入字节或写入文件数。

查看历史记录

5. 在历史记录界面,再单击日志可查看作业执行的日志信息。

也可以在作业列表界面,选择更多 > 日志来查看该作业最近的一次日志。

图2 查看作业日志

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。