云数据库RDS提供无感数据集成(Zero-ETL)功能,用于将RDS数据同步至数据仓库(AnalyticDB PostgreSQL),您无需搭建或维护数据同步链路,且数据同步链路不收费,减少数据传输成本和运维成本。
支持地域
华北2(北京)、华东1(杭州)、华东2(上海)和华南1(深圳)
支持的地域正在持续开放中,具体以RDS控制台为准。
方案概述
在大数据时代,企业面临着大量分散在不同的系统和平台上的业务数据,为了有效地管理和利用这些数据,企业往往需要依赖于ETL工具对数据进行集中式管理。
ETL是将上层业务系统的数据经过提取(Extract)、转换清洗(Transform)、加载(Load)到数据仓库的处理过程,目的是将上游分散的数据整合到目标端数仓,通过在数仓中做进一步的计算分析,来为业务做有效的商业决策。
传统的ETL流程通常会面临以下挑战:
资源成本增加:不同的数据源可能需要不同的ETL工具,搭建ETL链路会产生额外的资源成本。
系统复杂度增加:用户需要自行维护ETL工具,增加了运维难度,无法专注于业务应用的开发。
数据实时性降低:部分ETL流程涉及周期性的批量更新,在近实时的应用场景中,无法快速产出分析结果。
为了解决这些问题,阿里云瑶池数据库提供了无感数据集成(Zero-ETL)功能,可以快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统(OLTP)的数据自动进行提取、转换清洗和加载到数据仓库(OLAP),从而一站式完成数据同步和管理,实现事务处理和数据分析一体化,帮助客户专注于数据分析业务。
功能优势
简单易用:用户无需创建和维护执行ETL(提取、转换、加载)操作的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注于上层应用开发。
零成本:Zero-ETL链路不额外收费,可免费实现在数据仓库中对上游数据进行分析。
多源汇聚:通过Zero-ETL链路将多个实例中的数据实时同步至一个AnalyticDB PostgreSQL版实例中,构建全局分析视角。
支持链路
RDS PostgreSQL -> AnalyticDB PostgreSQL
费用说明
无感数据集成(Zero-ETL)同步链路免费。
前提条件
已创建AnalyticDB PostgreSQL版实例。如需创建,请参见创建AnalyticDB PostgreSQL版实例。
RDS PostgreSQL实例和AnalyticDB PostgreSQL版实例必须处于相同的地域。
已在AnalyticDB PostgreSQL版实例中创建接收数据的数据库。如需创建,请参见AnalyticDB PostgreSQL数据库管理。
已获取RDS PostgreSQL的高权限账号,且需要将其设置为目标数据库的Owner(授权账号)。如需创建,请参见创建RDS PostgreSQL账号。
已获取AnalyticDB PostgreSQL版实例的数据库账号。如需创建,请参见创建AnalyticDB PostgreSQL数据库账号。
说明您也可以使用初始账号或具备SUPERUSER权限的账号。
已将RDS PostgreSQL实例的
wal_level
设置为logical
。修改参数请参见设置RDS PostgreSQL实例参数。已为RDS PostgreSQL实例开启逻辑复制槽故障转移(Logical Replication Slot Failover)。RDS PostgreSQL默认开启该功能,查询功能开启状态请参见逻辑复制槽故障转移(Logical Replication Slot Failover)。
说明开启后可以保障同步任务的正常进行,避免主备切换导致的逻辑订阅中断。
准备工作
创建服务关联角色
前往RAM控制台的角色列表。
检查角色列表中,是否存在名为AliyunServiceRoleForADBPG的服务关联角色。若不存在,则需创建相关角色。
说明需要在创建ZeroETL链路前创建服务关联角色。
单击左侧创建角色。
在弹出的创建角色对话框中,选择阿里云服务,并单击下一步。
选择角色类型为服务关联角色,并选择云原生数据仓库 AnalyticDB PostgreSQL版。
单击完成,返回角色列表,确保已成功创建服务关联角色。
授予RAM用户管理权限
RAM用户创建和管理Zero-ETL链路需要下列两种权限。
权限一:授予RAM用户目标RDS实例管理权限
RAM用户必须拥有目标实例的管理权限AliyunGPDBFullAccess(完全管理AnalyticDB PostgreSQL的权限),才可以创建和管理目标实例的Zero-ETL链路。具体操作,请参见为RAM用户授权。
权限二:授予RAM用户Zero-ETL管理权限
RAM用户需要具备为数据源实例(RDS PostgreSQL)与目标实例(AnalyticDB PostgreSQL)创建链路的权限,才能创建和管理Zero-ETL链路。您可以自定义权限策略,允许为数据源和目标端的所有实例创建链路或仅为指定实例创建链路,并将自定义权限策略授权给RAM用户。创建自定义权限策略与RAM用户授权的操作,请参见创建自定义权限策略。
自定义权限策略的脚本如下:
为所有RDS PostgreSQL实例和AnalyticDB PostgreSQL实例授权
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:gpdb:*:*:*",
"acs:rds:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig",
"dts:DescribeConciseJobStatics",
"dts:ListUserAuthorizationLogs",
"dts:CreateUserAuthorization"
],
"Resource": [
"acs:dts:*:*:*"
]
}
]
}
为指定RDS PostgreSQL实例和AnalyticDB PostgreSQL实例授权
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:gpdb:*:*:dbcluster/gp-bp13e375cd8x2****",
"acs:rds:*:*:dbinstance/pgm-2zeyjzi91g53****"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig",
"dts:DescribeConciseJobStatics",
"dts:ListUserAuthorizationLogs",
"dts:CreateUserAuthorization"
],
"Resource": "acs:dts:*:*:*"
}
]
}
操作步骤
登录RDS管理控制台,单击左侧导航栏数据集成。
在无感数据集成 (Zero-ETL)页签,单击创建Zero-ETL任务。
在创建Zero-ETL任务页面配置源库信息和目标库信息。
配置源库信息:
源库信息
说明
任务名称
Zero-ETL任务名称。
数据库类型
选择RDS PostgreSQL。
接入方式
仅支持云实例接入。
实例地区
选择源实例所属地域。
实例ID
RDS PostgreSQL实例ID。
数据库名称
RDS PostgreSQL实例数据库名称。
数据库账号
RDS PostgreSQL实例的数据库账号。
数据库密码
RDS PostgreSQL数据库账号的密码。
连接方式
连接RDS PostgreSQL实例的方式。
配置目标库信息:
目标库信息
说明
数据库类型
当前目标库仅支持AnalyticDB PostgreSQL。
接入方式
仅支持云实例接入。
实例地区
目标实例所属地域。
实例ID
目标实例ID。
数据库名称
目标实例中用于接收数据的数据库名称。
数据库账号
目标实例的数据库账号。
数据库密码
数据库账号对应的密码。
上述参数配置完成后,单击测试连接以进行下一步,进入配置Zero-ETL页面,配置如下参数:
配置项目
说明
实例级别选择所需同步的DDL和DML
勾选所需同步的DML操作(insert、update和delete)和DDL操作(create、alter、drop、rename和truncate),默认全部勾选。
源库对象和已选择对象
数据库中源库对象和同步对象。
高级配置(选填)
设置源库、目标库无法连接后的重试时间,以及源库、目标库出现其他问题后的重试时间。
上述参数配置完成后,勾选Zero-ETL免运维说明,单击下一步配置库表字段,配置信息如下:
库表字段配置
说明
数据库名称
选择已有的数据库。
表名称
选择已有的数据表。
主键列
已选数据表中的主键所在字段。
分布键
已选数据表中的分布键所在字段。
类型
数据表类型,包括分区表和复制表。
定义状态
定义完库表字段配置状态后,即从未定义变为已定义。
配置完上述所有参数后,单击下一步保存任务并预检查。
预检查通过,单击启动,启动Zero-ETL任务。
您可以在无感数据集成 (Zero-ETL)页面,单击源端页签,查看目标Zero-ETL任务的名称、源/目标、运行状态等信息。