T+1多库合并建仓

本文档主要介绍了多库合并建仓的操作步骤。

背景信息

在数据库应用中,当单个关系型数据库RDS(Relational Database Service)的数据量越来越多时,相应的数据查询时间也会延长,影响用户体验。为保证业务可以继续使用RDS数据库,业务端通常会采用分库分表技术,将一个RDS数据库中的单张表数据拆分到多个数据库的多张表中。上述方案可解决因数据量大而导致的用户体验问题,但在对分库分表数据进行大数据分析时,逻辑上的一个表被拆成了多张表,由于没有类似TDDL中间件来屏蔽物理表的拆分,进行数据分析时变得十分复杂。

解决方案

T+1多库合并建仓是指通过DLA控制台上的多库合并建仓向导将RDS中的分库分表数据聚合到统一的表中,并以分区表形式存储数据。您可以全局分析所有数据,也可以选择某个分区对分区数据进行分析,进行数据分析时会非常的方便,并且也不影响RDS端的业务运行。

前提条件

  • 多库合并建仓时,DLA将OSS作为存储RDS数据的数据仓库,您需要在OSS中完成以下准备工作:

    1. 开通OSS服务,请参见开通OSS服务

    2. 创建存储空间,请参见创建存储空间

    3. 新建目录,请参见新建目录

    说明

    根据业务需求,判断是否需要新建目录存储RDS数据。

  • 根据您的业务需要,准备好RDS数据源。具体请参见快速入门

操作步骤

  1. 登录Data Lake Analytics管理控制台

  2. 在页面左上角,选择DLA所在地域。

  3. 单击左侧导航栏的数据湖管理 > 数据入湖,在数据入湖页面单击多库合并建仓中的进入向导

  4. DLA首次访问RDS时,需要您将RDS的只读权限授予DLA,授权完成后单击下一步

    说明

    如果您之前已经将RDS的只读权限授予DLA,可以忽略该步骤。

    11
  5. 根据页面提示,进行参数配置。

    类别

    参数

    说明

    手动选择

    说明

    通过手动方式指定RDS实例,该方式适用于RDS实例个数不多且实例个数处于静态或者不会频繁动态增加的场景。

    类型

    数据源的类型为RDS。 您可以勾选实例,将RDS实例添加到数据源中。

    数据库筛选规则

    输入您要同步的数据库名字。多个数据库名字之间用英文逗号(,)分隔。数据库名支持使用通配符%,例如user_%。

    通过查询

    说明

    指定通过SQL查询方式指定RDS数据源,该方式适用于RDS实例个数较多且实例个数动态增加的场景。

    -

    例如,SELECT 'mysql' AS engine, 'db001' AS db_name, 'rm-111..aliyuncs.com' AS host, 3306 AS port, 'rm-123445' AS instance_id, 'vpc-3424555' AS vpc_id FROM tbl1

    认证信息

    用户名

    为使用方便,DLA要求您选择的所有数据库均使用统一的用户名和密码。

    密码

    上述用户名对应的密码。输入用户名和密码后,您可以单击测试连接,进行连通性测试。

    建仓配置

    Schema名称

    设置Schema的名称,即RDS数据库在DLA中的映射数据库名称。

    数据位置

    建仓时,RDS数据在OSS中的详细存储地址。系统将自动拉取与DLA同地域的OSS Bucket,单击选择位置,您可以根据业务需要,灵活选取Bucket和Object。使用多库合并建仓功能时,DLA需要有删除OSS数据的权限,以便进行从OSS数据到RDS数据的ETL(Extract Transform Load)操作,请参见授权DLA删除OSS文件

    同步时间

    设置将RDS数据同步至OSS的时间。系统默认的数据同步时间是00:30,您可以根据业务规律,将数据同步时间设置在业务低峰期,以免同步过程中可能对业务造成的影响。

    表名生成规则

    设置DLA建仓时,RDS表在数仓中的映射表名。映射表名将通过以下两种规则自动生成:

    • IdentityResolver:数仓中的表名与RDS表名相同,适用于RDS中有分库但没有分表的场景。

    • RemoveTrailingUnderscoreAndNumberResolver:将RDS表名中最后一次出现的下划线和数字去掉,作为数仓中的表名。例如,RDS表名为tbl_001,则数仓表名为tbl。

    分区配置

    设置数仓的分区字段以及分区字段值的生成方式。分区字段值为一个包含变量的表达式,例如${rdsInstanceId}。DLA暂时支持以下变量:

    • rdsEngine:RDS支持的引擎类型,包含MySQL、SQLServer、PostgreSQL、Oracle。

    • rdsDbName:RDS数据库的名字。

    • rdsTableName:RDS表的名字。

    • rdsInstanceId:RDS实例ID。

    • rdsVpcId:RDS实例所属VPC ID。

      说明

      建议您同时填写RDS实例ID以及数据库名。

    高级配置

    自定义设置项,例如过滤字段等。

    2
  6. 完成上述参数配置后,单击创建,创建数据仓库。

数据仓库创建成功后,DLA自动在您设定的同步时间将RDS数据同步到OSS中,同时在OSS中创建与RDS相同的表结构、在DLA中创建对应的OSS表。