云数据库RDS提供无感数据集成(Zero-ETL)功能,用于将RDS数据同步至数据仓库(AnalyticDB PostgreSQL),您无需搭建或维护数据同步链路,且数据同步链路不收费,减少数据传输成本和运维成本。
支持地域
华北2(北京)、华东1(杭州)、华东2(上海)和华南1(深圳)
支持的地域正在持续开放中,具体以RDS控制台为准。
方案概述
在大数据时代,企业数据分散在不同系统和平台中,如何高效管理和利用这些数据成为关键挑战。传统上,企业依赖ETL工具(提取、转换、加载)将分散的数据整合到数据仓库,以支持业务决策。然而,传统的ETL流程通常面临以下问题:
- 系统复杂度增加:用户需要自行维护ETL工具,增加了运维难度,难以专注于核心业务开发。 
- 资源成本增加:不同的数据源可能需要不同的ETL工具,搭建ETL链路会产生额外的资源成本。 
- 数据实时性降低:部分ETL流程涉及周期性的批量更新,在近实时场景下无法快速生成分析结果。 
为了解决这些问题,阿里云瑶池数据库提供了无感数据集成(Zero-ETL)功能,能够快速构建OLTP(在线事务处理)与OLAP(在线分析处理)之间的数据同步链路。通过自动化的数据提取、转换和加载,Zero-ETL实现了事务处理与数据分析的一体化,帮助企业专注于数据分析业务,提升效率。
功能优势
- 简单易用:用户无需创建和维护执行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链路前创建服务关联角色。 
- 进入服务关联角色创建页面,信任的云服务配置为AliyunServiceRoleForADBPG。  
- 单击创建服务关联角色。 - 返回角色列表,确保已成功创建服务关联角色。 
授予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任务的名称、源/目标、运行状态等信息。