无感集成(Zero-ETL)
云原生数据仓库 AnalyticDB PostgreSQL 版提供无感集成(Zero-ETL)功能,可以帮助您一站式完成数据同步和管理,实现事务处理和数据分析一体化,专注于数据分析业务。
公测时间
2024年4月1日至6月30日。
公测地域
华北2(北京)、华东1(杭州)、华东2(上海)和华南1(深圳)。
方案概述
在大数据时代,企业面临着大量分散在不同的系统和平台上的业务数据,为了有效地管理和利用这些数据,企业往往需要依赖于ETL工具对数据进行集中式管理。
ETL是将上层业务系统的数据经过提取(Extract)、转换清洗(Transform)、加载(Load)到数据仓库的处理过程,目的是将上游分散的数据整合到目标端数仓,通过在数仓中做进一步的计算分析,来为业务做有效的商业决策。
传统的ETL流程通常会面临以下挑战:
资源成本增加:不同的数据源可能需要不同的ETL工具,搭建ETL链路会产生额外的资源成本。
系统复杂度增加:用户需要自行维护ETL工具,增加了运维难度,无法专注于业务应用的开发。
数据实时性降低:部分ETL流程涉及周期性的批量更新,在近实时的应用场景中,无法快速产出分析结果。
为了解决这些问题,阿里云瑶池数据库提供了无感集成(Zero-ETL)功能,可以快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统(OLTP)的数据自动进行提取、转换清洗和加载到数据仓库(OLAP),从而一站式完成数据同步和管理,实现事务处理和数据分析一体化,帮助客户专注于数据分析业务。
云原生数据仓库 AnalyticDB PostgreSQL 版仅支持以下Zero-ETL链路:
云原生数据库 PolarDB PostgreSQL 版至云原生数据仓库 AnalyticDB PostgreSQL 版的数据同步链路。
云原生数据库 PolarDB MySQL 版至云原生数据仓库 AnalyticDB PostgreSQL 版的数据同步链路。
云数据库 RDS PostgreSQL 版至云原生数据仓库 AnalyticDB PostgreSQL 版的数据同步链路。
云数据库 RDS MySQL 版至云原生数据仓库 AnalyticDB PostgreSQL 版的数据同步链路。
方案优势
简单易用:用户无需创建和维护执行ETL(提取、转换、加载操作)的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注于上层应用开发。
零成本:Zero-ETL链路不额外收费,可免费实现在云原生数据仓库 AnalyticDB PostgreSQL 版中对上游数据进行分析。
多源汇聚:通过Zero-ETL链路将多个实例中的数据实时同步至一个云原生数据仓库 AnalyticDB PostgreSQL 版实例中,构建全局分析视角。
注意事项
数据同步链路注意事项:
云原生数据库 PolarDB PostgreSQL 版链路的注意事项,请参见PolarDB PostgreSQL版同步至云原生数据仓库 AnalyticDB PostgreSQL版。
云原生数据库 PolarDB MySQL 版链路的注意事项,请参见PolarDB MySQL版同步至云原生数据仓库 AnalyticDB PostgreSQL版。
云数据库 RDS PostgreSQL 版链路的注意事项,请参见RDS PostgreSQL同步至云原生数据仓库 AnalyticDB PostgreSQL版。
云数据库 RDS MySQL 版链路的注意事项,请参见RDS MySQL同步至云原生数据仓库 AnalyticDB PostgreSQL 版。
费用说明
不收取额外费用,仅收取云数据库 RDS PostgreSQL 版、云原生数据库 PolarDB MySQL 版、云原生数据库 PolarDB PostgreSQL 版、云数据库 RDS MySQL 版实例与云原生数据仓库 AnalyticDB PostgreSQL 版实例的费用。
前提条件
已创建实例:
已创建云原生数据仓库 AnalyticDB PostgreSQL 版实例。具体操作,请参见创建实例。
已创建云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB PostgreSQL 版或云原生数据库 PolarDB MySQL 版实例。具体操作,请参见创建RDS PostgreSQL实例,快速创建RDS MySQL实例,创建PolarDB PostgreSQL版实例和创建PolarDB MySQL版集群。
已将云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB MySQL 版或云原生数据库 PolarDB PostgreSQL 版实例的wal_level参数值设置为logical。具体操作,请参见RDS PostgreSQL同步至AnalyticDB for PostgreSQL。
云原生数据仓库 AnalyticDB PostgreSQL 版的可用存储空间需要大于云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB MySQL 版或云原生数据库 PolarDB PostgreSQL 版实例已使用的存储空间。
准备工作
创建云原生数据仓库 AnalyticDB PostgreSQL 版服务关联角色
前往RAM控制台的角色列表。
检查角色列表中,是否已存在名为
AliyunServiceRoleForADBPG
的服务关联角色。若不存在,则需创建相关角色。单击左侧创建角色。
在弹出的创建角色对话框中,选择阿里云服务,并单击下一步。
选择角色类型为服务关联角色,并选择云服务云原生数据仓库 AnalyticDB PostgreSQL 版。
单击完成,返回角色列表,确保已成功创建服务关联角色。
授予RAM用户管理权限
RAM用户创建和管理Zero-ETL链路需要下列两种权限
授予RAM用户云原生数据仓库 AnalyticDB PostgreSQL 版管理权限
RAM用户必须拥有云原生数据仓库 AnalyticDB PostgreSQL 版的管理权限:AliyunGPDBFullAccess
,才可以创建和管理云原生数据仓库 AnalyticDB PostgreSQL 版的Zero-ETL链路。操作步骤,请参见为RAM用户授权。
授予RAM用户Zero-ETL管理权限
RAM用户需要具备为数据源实例与目标实例(云原生数据仓库 AnalyticDB PostgreSQL 版)创建链路的权限,才能创建和管理Zero-ETL链路。您可以自定义权限策略,允许为数据源和云原生数据仓库 AnalyticDB PostgreSQL 版的所有实例创建链路或仅为指定实例创建链路,并将自定义权限策略授权给RAM用户。
授予所有的云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB MySQL 版、云原生数据库 PolarDB PostgreSQL 版、云原生数据仓库 AnalyticDB PostgreSQL 版实例权限,具体脚本如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:*", "acs:rds:*:*:*", "acs:polardb:*:*:*" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": [ "acs:gpdb:*:*:*" ] } ] }
授予指定的云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB MySQL 版、云原生数据库 PolarDB PostgreSQL 版、云原生数据仓库 AnalyticDB PostgreSQL 版实例权限,具体脚本如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dts:*", "Resource": [ "acs:gpdb:*:*:dbinstanc****", "acs:rds:*:*:dbinstance****", "acs:polardb:*:*:dbclus****" ] }, { "Effect": "Allow", "Action": [ "dts:DescribeRegions", "dts:DescribeConfigRelations", "dts:DescribeSrcLinkConfig", "dts:DescribeDestLinkConfig", "dts:DescribeLinkConfig" ], "Resource": "acs:dts:*:*:*" } ] }
操作步骤
在控制台左上角,选择实例所在地域。
找到目标实例,单击实例ID。
在左侧导航栏,选择无感集成(Zero-ETL),然后单击左上角创建Zero-ETL任务。
在创建Zero-ETL任务页面,创建一个Zero-ETL任务,配置源库信息和目标库信息:
配置源库信息:
源库信息
说明
示例值
任务名称
Zero-ETL任务名称。
Zeroetltest
数据库类型
当前源库支持云数据库 RDS PostgreSQL 版、云数据库 RDS MySQL 版、云原生数据库 PolarDB MySQL 版和云原生数据库 PolarDB PostgreSQL 版四种类型。
云数据库 RDS PostgreSQL 版
接入方式
仅支持云实例接入。
云实例
实例地区
选择源实例所在的地域。
华东2(上海)
实例ID
源实例的ID。
pgm-2ze****
数据库名称
源实例中数据库的名称。
testdb
数据库账号
源实例中数据库的账号。
test
数据库密码
源实例中数据库账号的密码。
password****
连接方式
SSL安全连接或非加密连接。
说明SSL链接增加了一层证书加密,在传输数据的过程中,会对数据加密,即使有人在网络层获取了数据也无法得知具体内容。
SSL安全连接
配置目标库信息:
目标库信息
说明
示例值
数据库类型
当前目标库仅支持云原生数据仓库 AnalyticDB PostgreSQL 版。
云原生数据仓库 AnalyticDB PostgreSQL 版
接入方式
仅支持云实例接入。
云实例
实例地区
云原生数据仓库 AnalyticDB PostgreSQL 版规划的实例地域。
华东2(上海)
实例ID
云原生数据仓库 AnalyticDB PostgreSQL 版实例的ID。
gp-2zeod****
数据库名称
云原生数据仓库 AnalyticDB PostgreSQL 版数据库的名称。
testdb
数据库账号
云原生数据仓库 AnalyticDB PostgreSQL 版数据库的账号。
test
数据库密码
云原生数据仓库 AnalyticDB PostgreSQL 版数据库账号的密码。
password****
测试连接以进行下一步,进入配置Zero-ETL页面,配置信息如下:
配置项目
说明
示例值
实例级别选择所需同步的DDL和DML
勾选所需同步的DML操作(insert、update和delete)
和DDL操作(create、alter、drop、rename和truncate)。
DML操作(insert、update和delete)。
DDL操作(create、alter、drop、rename和truncate)。
源库对象和已选择对象
数据库中源库对象和同步对象。
public
高级配置(选填)
设置源库、目标库无法连接后的重试时间以及源库、目标库出现其他问题后的重试时间。
源库、目标库无法连接后的重试时间:10分钟。
源库、目标库出现其他问题后的重试时间:10分钟。
配置库表字段,配置信息如下:
库表字段配置
说明
示例值
数据库名称
选择已有的数据库。
public
表名称
选择已有的数据表。
table1
主键字段
已选数据表中的主键所在字段。
id
分布键
数据表中的一个或多个字段,用来确定数据在分布式环境下的存储位置。
id
类型
数据分区类型。
哈希分布表
定义状态
定义完库表字段配置状态后,即从未定义变为已定义。
已定义
配置完所有资源后,请单击下一步保存任务并预检查。
预检查通过后,系统自动启动Zero-ETL任务,在任务列表可查看任务进度。
Zero-ETL任务监控与告警
创建并启动Zero-ETL任务后,您可以在云监控控制台设置Zero-ETL任务报警规则,实时监控Zero-ETL任务的运行情况。具体操作如下。