全部产品
云市场

多库合并建仓

更新时间:2020-04-09 15:16:45

背景信息

在数据库应用中,当单个阿里云关系型数据库RDS(Relational Database Service)的数据量越来越大时,相应的数据查询时间也会延长,影响用户体验。此时为保证业务中可以继续使用RDS数据库,业务端通常会采用分库分表技术,将一个RDS数据库中的单张表数据拆分到多个数据库的多张表中,然后修改业务层代码,并配合使用类似TDDL的分库分表中间件。

上述方案可解决因数据量大而导致的用户体验下降问题,但在对分库分表数据进行大数据分析时,逻辑上的一个表被拆成了多张表,由于没有类似TDDL中间件来屏蔽物理表的拆分,进行数据分析时变得十分复杂。

解决方案

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

前提条件

使用多库合并建仓前,您需要完成以下准备工作:

操作步骤

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

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

  3. 在左侧导航栏单击解决方案

  4. 解决方案页面,单击多库合并建仓中的进入向导

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

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

    只读授权DLA

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

    类别 参数 说明
    手动选择

    通过手动方式指定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以及数据库名,例如:
    • 分区名rds_instance_id,分区值${rdsInstanceId}
    • 分区名rds_db_name,分区值${rdsDbName}
    高级配置 自定义设置项,例如过滤字段等,请参见高级选线功能

    多库合并

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

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