无感集成(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 版实例中,构建全局分析视角。

注意事项

数据同步链路注意事项:

费用说明

不收取额外费用,仅收取云数据库 RDS PostgreSQL 版云原生数据库 PolarDB MySQL 版云原生数据库 PolarDB PostgreSQL 版云数据库 RDS MySQL 版实例与云原生数据仓库 AnalyticDB PostgreSQL 版实例的费用。

前提条件

  • 已创建实例:

  • 已将云数据库 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 版服务关联角色

  1. 前往RAM控制台角色列表。

  2. 检查角色列表中,是否已存在名为AliyunServiceRoleForADBPG的服务关联角色。若不存在,则需创建相关角色。

  3. 单击左侧创建角色

  4. 在弹出的创建角色对话框中,选择阿里云服务,并单击下一步

    阿里云服务

  5. 选择角色类型为服务关联角色,并选择云服务云原生数据仓库 AnalyticDB PostgreSQL 版

    image

  6. 单击完成,返回角色列表,确保已成功创建服务关联角色。

授予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用户。

  1. 授予所有的云数据库 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:*:*:*"
                ]
            }
        ]
    }
  2. 授予指定的云数据库 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:*:*:*"
            }
        ]
    }

RAM控制台创建自定义权限策略。操作步骤,请参见创建自定义权限策略

操作步骤

  1. 登录云原生数据仓库AnalyticDB PostgreSQL版控制台

  2. 在控制台左上角,选择实例所在地域。

  3. 找到目标实例,单击实例ID。

  4. 在左侧导航栏,选择无感集成(Zero-ETL),然后单击左上角创建Zero-ETL任务

    image

  5. 创建Zero-ETL任务页面,创建一个Zero-ETL任务,配置源库信息和目标库信息:

    1. 配置源库信息:

      源库信息

      说明

      示例值

      任务名称

      Zero-ETL任务名称。

      Zeroetltest

      数据库类型

      当前源库支持云数据库 RDS PostgreSQL 版云数据库 RDS MySQL 版云原生数据库 PolarDB MySQL 版云原生数据库 PolarDB PostgreSQL 版四种类型。

      云数据库 RDS PostgreSQL 版

      接入方式

      仅支持云实例接入。

      云实例

      实例地区

      选择源实例所在的地域。

      华东2(上海)

      实例ID

      源实例的ID。

      pgm-2ze****

      数据库名称

      源实例中数据库的名称。

      testdb

      数据库账号

      源实例中数据库的账号。

      test

      数据库密码

      源实例中数据库账号的密码。

      password****

      连接方式

      SSL安全连接或非加密连接。

      说明

      SSL链接增加了一层证书加密,在传输数据的过程中,会对数据加密,即使有人在网络层获取了数据也无法得知具体内容。

      SSL安全连接

    2. 配置目标库信息:

      目标库信息

      说明

      示例值

      数据库类型

      当前目标库仅支持云原生数据仓库 AnalyticDB PostgreSQL 版

      云原生数据仓库 AnalyticDB PostgreSQL 版

      接入方式

      仅支持云实例接入。

      云实例

      实例地区

      云原生数据仓库 AnalyticDB PostgreSQL 版规划的实例地域。

      华东2(上海)

      实例ID

      云原生数据仓库 AnalyticDB PostgreSQL 版实例的ID。

      gp-2zeod****

      数据库名称

      云原生数据仓库 AnalyticDB PostgreSQL 版数据库的名称。

      testdb

      数据库账号

      云原生数据仓库 AnalyticDB PostgreSQL 版数据库的账号。

      test

      数据库密码

      云原生数据仓库 AnalyticDB PostgreSQL 版数据库账号的密码。

      password****

  6. 测试连接以进行下一步,进入配置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分钟。

  7. 配置库表字段,配置信息如下:

    库表字段配置

    说明

    示例值

    数据库名称

    选择已有的数据库。

    public

    表名称

    选择已有的数据表。

    table1

    主键字段

    已选数据表中的主键所在字段。

    id

    分布键

    数据表中的一个或多个字段,用来确定数据在分布式环境下的存储位置。

    id

    类型

    数据分区类型。

    哈希分布表

    定义状态

    定义完库表字段配置状态后,即从未定义变为已定义。

    已定义

  8. 配置完所有资源后,请单击下一步保存任务并预检查

    image

  9. 预检查通过后,系统自动启动Zero-ETL任务,在任务列表可查看任务进度。

    image

Zero-ETL任务监控与告警

创建并启动Zero-ETL任务后,您可以在云监控控制台设置Zero-ETL任务报警规则,实时监控Zero-ETL任务的运行情况。具体操作如下。

  1. 登录云监控控制台

  2. 查看监控信息。

    1. 在左侧导航栏,单击云资源监控 > 云产品监控 > 数据库

    2. 鼠标悬浮在云原生数据仓库 AnalyticDB PostgreSQL 版,单击AnalyticDB for PostgreSQL- ZeroETL延迟

    3. 实例列表页,单击实例ID,查看每个实例下Zero-ETL任务的监控信息。

  3. 创建报警规则。

    1. 在左侧导航栏,单击报警服务 > 报警规则

    2. 单击创建报警规则,在弹出的创建报警规则面板,配置Zero-ETL任务报警规则。具体操作,请参见创建报警规则

  4. 创建订阅策略。

    1. 在左侧导航栏,单击事件中心 > 事件订阅

    2. 单击创建订阅策略,在创建订阅策略页面,配置Zero-ETL任务订阅策略。具体操作,请参见创建订阅策略