本文档主要介绍了多库合并建仓的操作步骤。
背景信息
在数据库应用中,当单个关系型数据库RDS(Relational Database Service)的数据量越来越多时,相应的数据查询时间也会延长,影响用户体验。为保证业务可以继续使用RDS数据库,业务端通常会采用分库分表技术,将一个RDS数据库中的单张表数据拆分到多个数据库的多张表中。上述方案可解决因数据量大而导致的用户体验问题,但在对分库分表数据进行大数据分析时,逻辑上的一个表被拆成了多张表,由于没有类似TDDL中间件来屏蔽物理表的拆分,进行数据分析时变得十分复杂。
解决方案
T+1多库合并建仓是指通过DLA控制台上的多库合并建仓向导将RDS中的分库分表数据聚合到统一的表中,并以分区表形式存储数据。您可以全局分析所有数据,也可以选择某个分区对分区数据进行分析,进行数据分析时会非常的方便,并且也不影响RDS端的业务运行。
前提条件
多库合并建仓时,DLA将OSS作为存储RDS数据的数据仓库,您需要在OSS中完成以下准备工作:
说明根据业务需求,判断是否需要新建目录存储RDS数据。
根据您的业务需要,准备好RDS数据源。具体请参见快速入门。
操作步骤
在页面左上角,选择DLA所在地域。
单击左侧导航栏的数据湖管理 > 数据入湖,在数据入湖页面单击多库合并建仓中的进入向导。
DLA首次访问RDS时,需要您将RDS的只读权限授予DLA,授权完成后单击下一步。
说明如果您之前已经将RDS的只读权限授予DLA,可以忽略该步骤。
根据页面提示,进行参数配置。
类别
参数
说明
手动选择
说明通过手动方式指定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以及数据库名。
高级配置
自定义设置项,例如过滤字段等。
完成上述参数配置后,单击创建,创建数据仓库。
数据仓库创建成功后,DLA自动在您设定的同步时间将RDS数据同步到OSS中,同时在OSS中创建与RDS相同的表结构、在DLA中创建对应的OSS表。