文档

无感数据集成(Zero-ETL)

更新时间:

云数据库RDS提供无感数据集成(Zero-ETL)功能,用于将RDS数据同步至数据仓库(AnalyticDB MySQL、AnalyticDB PostgreSQL或ClickHouse),您无需搭建或维护数据同步链路,且数据同步链路不收费,减少数据传输成本和运维成本。

支持地域

华北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 MySQL集群、AnalyticDB PostgreSQL实例或ClickHouse实例中,构建全局分析视角。

    说明

    多个实例中的数据实时同步至一个ClickHouse实例,仅支持不同任务之间的同步对象不重叠。

支持链路

  • RDS MySQL->ClickHouse

  • RDS MySQL->AnalyticDB MySQL 3.0

  • RDS MySQL->AnalyticDB PostgreSQL

费用说明

无感数据集成(Zero-ETL)同步链路免费。

前提条件

准备工作

创建服务关联角色并授予RAM用户对应的管理权限。

RDS MySQL->ClickHouse

  1. 创建服务关联角色AliyunServiceRoleForClickHouseZeroETL

    说明

    在创建链路进行配置,并单击数据库实例ID下拉列表项时,会有弹窗报错提示创建服务关联角色AliyunServiceRoleForClickHouseZeroETL(如下图),无需手动创建,系统会自动创建该角色

    image

  2. 授予RAM用户管理权限。

    RAM用户必须具备以下三种权限,才可以成功创建Zero链路。具体操作,请参见创建自定义权限策略

    • 源端RDS MySQL权限:AliyunRDSFullAccess。

    • 目标端ClickHouse权限:ClickHouse的自定义策略脚本如下。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "clickhouse:*",
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:CreateServiceLinkedRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": "clickhouse.aliyuncs.com"
                      }
                  }
              }
          ]
      }
    • DTS的权限:DTS的自定义策略脚本如下。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "dts:*",
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:PassRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "acs:Service": "dts.aliyuncs.com"
                      }
                  }
              }
          ]
      }

RDS MySQL->AnalyticDB MySQL 3.0

  1. 创建服务关联角色AliyunServiceRoleForAnalyticDBForMySQL

    1. 前往RAM控制台并选择左侧导航栏的角色列表。检查角色列表中,是否已存在名为AliyunServiceRoleForAnalyticDBForMySQL的服务关联角色。若不存在,则需创建相关角色。

    2. 单击左上角创建角色。

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

    4. 选择角色类型为服务关联角色,并选择AnalyticDB MySQL。

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

  2. 授予RAM用户管理权限。

    RAM用户支持为所有或指定RDS MySQL实例和AnalyticDB MySQL集群授权。具体操作,请参见创建自定义权限策略

    自定义权限策略的脚本如下:

    为所有RDS MySQL和AnalyticDB MySQL集群授权

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "dts:*",
                "Resource": [
                    "acs:adb:*:*:*",
                    "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 MySQL和AnalyticDB MySQL集群授权

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "dts:*",
                "Resource": [
                    "acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****", 替换为需要同步的AnalyticDB MySQL集群ID
                    "acs:rds:*:*:dbinstance/rm-2ze6fs8ouh43****" 替换为需要同步的RDS MySQL实例ID
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "dts:DescribeRegions",
                    "dts:DescribeConfigRelations",
                    "dts:DescribeSrcLinkConfig",
                    "dts:DescribeDestLinkConfig",
                    "dts:DescribeLinkConfig",
                    "dts:DescribeConciseJobStatics",
                    "dts:ListUserAuthorizationLogs",
                    "dts:CreateUserAuthorization"
                ],
                "Resource": "acs:dts:*:*:*"
            }
        ]
    }

RDS MySQL->AnalyticDB PostgreSQL

  1. 创建服务关联角色AliyunServiceRoleForADBPG

    1. 前往RAM控制台并选择左侧导航栏的角色列表。检查角色列表中,是否已存在名为AliyunServiceRoleForADBPG的服务关联角色。若不存在,则需创建相关角色。

    2. 单击左上角创建角色。

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

    4. 选择角色类型为服务关联角色,并选择AnalyticDB PostgreSQL。

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

  2. 授予RAM用户管理权限。

    RAM用户支持为所有或指定RDS MySQL实例和AnalyticDB PostgreSQL实例授权。具体操作,请参见创建自定义权限策略

    自定义权限策略的脚本如下:

    为所有RDS MySQL和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"
                ],
                "Resource": [
                    "acs:gpdb:*:*:*"
                ]
            }
        ]
    }

    为指定RDS MySQL和AnalyticDB PostgreSQL实例授权

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "dts:*",
                "Resource": [
                    "acs:gpdb:*:*:dbinstanc/gp-bp1a740l3zx4****", 替换为需要同步的AnalyticDB PostgreSQL实例ID
                    "acs:rds:*:*:dbinstance/rm-2ze6fs8ouh43****"  替换为需要同步的RDS MySQL实例ID
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "dts:DescribeRegions",
                    "dts:DescribeConfigRelations",
                    "dts:DescribeSrcLinkConfig",
                    "dts:DescribeDestLinkConfig",
                    "dts:DescribeLinkConfig"
                ],
                "Resource": "acs:dts:*:*:*"
            }
        ]
    }

操作步骤

  1. 登录RDS管理控制台,单击左侧导航栏数据集成

  2. 无感数据集成 (Zero-ETL)页签,单击创建Zero-ETL任务

  3. 创建Zero-ETL任务页面配置源库信息和目标库信息。

    • 配置源库信息:

      源库信息

      说明

      任务名称

      Zero-ETL任务名称。

      数据库类型

      选择RDS MySQL

      接入方式

      仅支持云实例接入

      实例地区

      选择源实例所属地域。

      实例ID

      RDS MySQL实例ID。

      数据库名称

      RDS MySQL实例数据库名称。

      数据库账号

      RDS MySQL实例的数据库账号。

      数据库密码

      RDS MySQL数据库账号的密码。

      连接方式

      连接RDS MySQL实例的方式。包括非加密链接和SSL安全链接。

      说明

      如果设置为SSL安全连接,您需要提前开启RDS MySQL实例的SSL加密功能,详情请参见使用云端证书快速开启SSL链路加密

    • 配置目标库信息:

      目标库信息

      说明

      数据库类型

      当前目标库支持AnalyticDB MySQL 3.0AnalyticDB PostgreSQLClickHouse

      接入方式

      仅支持云实例接入

      实例地区

      目标库所属的地域。

      实例ID

      目标库的实例ID。

      数据库账号

      目标库实例的数据库账号。

      数据库密码

      目标库实例的数据库账号的密码。

  4. 上述参数配置完成后,单击测试连接以进行下一步,进入配置Zero-ETL页面,配置如下参数:

    配置项目

    说明

    同步类型

    实现数据源之间的数据实时同步。

    同步类型分为:库表结构同步、全量同步、增量同步。

    说明

    同步任务固定勾选增量数据同步,将源库产生的增量数据实时同步至目标库。

    不需要增量同步时,请使用数据迁移

    实例级别选择所需同步的DDL和DML

    勾选所需同步的DML操作(insertupdatedelete)和DDL操作(createalterdroprenametruncate),默认全部勾选。

    源库对象和已选择对象

    数据库中源库对象和同步对象。

    高级配置(选填)

    设置源库、目标库无法连接后的重试时间和源库、目标库出现其他问题后的重试时间。

  5. 上述参数配置完成后,单击配置库表字段,配置信息如下:

    库表字段配置

    说明

    数据库名称

    选择已有的数据库。

    表名称

    选择已有的数据表。

    主键列

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

    分布键

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

    类型

    数据表类型,包括分区表和复制表。

    定义状态

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

  6. 配置完上述所有参数后,单击下一步保存任务并预检查

  7. 预检查通过,单击启动,启动Zero-ETL任务。

说明

您可以在免费数据同步页面,查看目标Zero-ETL任务的名称源/目标运行状态等信息。