数据库

注册

 

发新话题 回复该主题

玩转DB里的数据阿里云DMS任务编排之 [复制链接]

1#

1.任务编排介绍

数据库是企业IT系统里的重要基础设施,里面存储了大量有价值的数据资产,如:交易数据、客户数据、订单数据,等等。其实,数据库在企业里一直扮演着一个数据生产者(Producer)的角色,日积月累这些数据会形成一个巨大的宝藏。但是,随着数据库中数据量的增长和数据形态的多样化,如何对数据进行存储、迁移和加工,并挖掘出其中的价值,是许多企业面临的难题。

为解决上述问题,阿里云DMS(DataManagementService)产品近期推出了一个新功能——任务编排。无论您的数据库部署在何处(阿里云/本地IDC/其他云厂商等),是何种类型(OLTP交易型数据库/OLAP分析型数据库),DMS任务编排都能够触达您的数据库,让您轻松地对数据库中的数据进行流转、加工和变换。DMS任务编排提供的主要功能和特性包括:

丰富的数据迁移能力:可实现数据库与数据库之间(如:OLTP在线库与OLAP离线库)、数据库与弹性存储之间(如:MySQL与OSS)的数据自由流动;丰富的数据加工手段:单库SQL任务、跨库SQL任务、数据迁移任务、Spark任务、数据备份与恢复服务(建设中);不仅可以通过SQL语句对单个数据库或多个数据库里的数据进行加工,还可编写Spark任务进行复杂的数据处理和AI分析;任务流和定时调度:通过可视化的方式将多个任务节点进行编排形成任务流,灵活按需设置多种不同粒度间隔的定时调度;按模板一键创建任务流:为不同的场景(如:历史数据归档到OSS)内置了任务流模板,用户可一键生成模板任务流,通过简单的配置即可应用于生产;牢靠的数据安全保障:依托DMS强大的数据安全能力,任务编排会对用户权限进行严格检查,仅限有权限的用户才能执行相应的任务。了解了DMS任务编排的功能,你一定开始好奇用DMS任务编排能做什么?下图展示了DMS任务编排支持的四类主要场景:

场景1:数据归档

目前比较流行的有两类数据库:传统单机版数据库(如:MySQL)和云原生数据库(如:阿里云PolarDB和AnalyticDBforMySQL)。前者的存储空间是有限的,后者虽然可以对存储扩容,但也要收取较高的费用。那么,当数据库中的数据量持续增长时,该如何降低存储成本呢?许多用户希望能将数据库中的冷数据/历史数据转储到可靠又低价的存储上,如:阿里云对象存储(OSS)。现在通过DMS任务编排,可轻松实现数据库数据周期归档(如:每日/每周)到OSS的需求。同时,DMS还有好地对接了阿里云数据湖分析产品(DLA),用户可在DMS里方便地访问DLA,对归档到OSS上的数据进行即席查询和分析。

场景2:数据集成

企业的数据可能分散在不同的数据源中(如:MySQL、SQLServer),也可能分散在不同的地域(例如:北京、杭州、深圳)。导致数据分散的原因有很多,比如:业务的垂直划分、微服务、应用的本地部署等等。数据的分散不可避免,但同时许多企业又有数据集成的需求,需要将各地的数据汇聚到一起进行全局分析(如:汇总和AI分析),典型的场景就是OLTP交易库的数据同步至OLAP分析库做离线分析。通过DMS任务编排,可以轻松实现这一需求。首先,DMS打通了各种网络环境(如:阿里云VPC/经典网络,本地IDC网络),可连接至各个地域的数据源。其次,DMS支持异构数据源间的数据集成,如:RDSMySQL到AnalyticDB。此外,通过DMS任务编排,还能满足各种集成方式的需求,如:单次全量集成、周期性增量集成。

场景3:数据加工

做完数据集成之后,用户通常还要对汇聚的原始数据进行加工、清洗和分析,才能挖掘出其中的价值,例如:每日统计产品的用户数(UV),按周产生报表数据。DMS任务编排提供了任务流和定时调度能力,通过任务流可以将复杂加工任务进行拆解和编排,然后配置调度信息。DMS支持单次调度和周期调度(如:按日、周、月),此外还支持多类型的加工任务,用户可使用SQL进行数据加工,也可编写Spark程序进行复杂的数据处理和AI分析。通过丰富的调度配置和任务类型,DMS任务编排能满足各种简单/复杂场景的数据加工需求。

场景4:定时操作

在日常数据库的使用中,有许多DML/DDL/DCL操作需要定期执行,如:每周清理历史数据(DELETE)防止表过大、每日更新统计信息(ANALYZETABLE)以获得更好的查询优化结果。有些数据库在内核层面已经提供了事件调度功能,如:MySQLEvent,但是使用特殊的语法创建Event和维护Event都有一定的成本。DMS任务编排的调度功能提供了可视化的方式轻松创建定时任务,并且不依赖数据库引擎上的能力,因此更加简易灵活,适用范围更广。

2.任务编排实操—DB数据周期归档

介绍完DMS任务编排的功能和使用场景,下面将以数据归档场景为例,介绍如何通过DMS任务编排和阿里云DLA服务将RDSMySQL数据周期地归档至OSS上。具体的实操步骤还可查阅DMS的使用文档。

2.1背景和需求

用户的RDSMySQL业务库中某张表(如:交易记录、登录/操作日志)的数据持续增长,占用了大量的存储空间,甚至影响到了数据库性能。同时,这部分数据又是有价值的,比如:用于审计、报表和统计分析,不能随意删除。为解决这个问题,用户有三个核心的需求:

降低MySQL业务库的存储压力;

对历史业务数据做增量归档;

对归档数据做分区,可按分区过滤进行高效查询。

为满足这三个需求,我们选择了阿里云DLA服务,因为其同时打通了OSS和RDSMySQL,能够对上面的数据进行迁移和即席分析。但是,DLA并不具备周期调度和增量数据迁移的能力,DMS任务编排正好可以与DLA互补,形成完整的解决方案满足用户需求。

在下面的实操中,我们假设用户RDSMySQL中待归档的表为订单表orders,其表结构如下(created_date字段为订单创建日期):

createtableorders(order_idbigint,product_namevarchar(32),pricedouble,total_amountdouble,created_datedate);

2.2前置条件

1、已购买阿里云DLA服务,且DLA服务的区域(Region)和待归档的RDSMySQL区域一致,如:都是华东1(杭州)

2、已开通阿里云OSS服务,且服务的区域与DLA、RDSMySQL一致

3、已购买阿里云DMS服务

4、DLA实例已录入DMS中(请参考DMS实例录入)各产品的购买要求和用途:

2.3配置任务流

下面介绍如何在DMS中操作实现RDSMySQL数据周期归档,主要包含5个步骤:

步骤1:创建DLA归档库

若要将数据归档至DLA上,首先要在DLA中创建一个用于归档的schema,用于存放归档表。在DMS首页的顶部菜单中,找到SQLConsole单库查询,并打开查询窗口,然后输入如下SQL语句并执行:

CREATEDATABASEdemo_schemaWITHDBPROPERTIES(catalog=oss,location=oss://xxxxxx/dla_demo/)

步骤2:创建任务流

在DMS首页的顶部菜单中,选择

数据工厂-任务编排

,进入任务编排的首页。在首页点击“新建任务流”,或者点击左侧tab进入开发空间,也可以快速地找到新建任务流的入口。在新建任务流的窗口,我们将任务流名称设为:rds_data_to_oss。

步骤3:配置任务节点

在任务流rds_data_to_oss中,依次新建三个DLA-SQL类型的任务节点:

创建RDS同步Schema:在DLA中创建Scheme映射到RDS创建OSS备份表:在DLA中建立OSS备份表,用于存储历史数据备份数据:实现RDSMySQL前一天数据的备份。节点创建完以后,可在节点间添加连线,对节点的执行顺序进行编排,产生完整任务流。

下面对每个节点的内容进行设置:

节点1:创建RDS同步Schema

要让DLA顺利访问RDSMySQL的数据,需要在DLA中为RDSMySQL创建一个Schema,取名la_mysql_rds。我们将以SQL的方式来创建Schema。首先,点击第一个任务节点,在右侧的内容设置Tab页中,输入如下SQL语句(其中部分参数需替换为RDS上的真实信息):

CREATESCHEMAIFNOTEXISTSdla_mysql_rdsWITHDBPROPERTIES(CATALOG=mysql,LOCATION=jdbc:mysql://xxxxxx.rds.aliyuncs.

分享 转发
TOP
发新话题 回复该主题