无感数据集成(Zero-ETL)

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

方案概述

在大数据时代,企业面临着大量分散在不同的系统和平台上的业务数据,为了有效地管理和利用这些数据,企业往往需要依赖于ETL工具对数据进行集中式管理。

ETL是将上层业务系统的数据经过提取(Extract)、转换清洗(Transform)、加载(Load)到数据仓库的处理过程,目的是将上游分散的数据整合到目标端数仓,通过在数仓中做进一步的计算分析,来为业务做出有效的商业决策。

传统的ETL流程通常会面临以下挑战:

  • 资源成本增加:不同的数据源可能需要不同的ETL工具,搭建ETL链路会产生额外的资源成本。

  • 系统复杂度增加:用户需要自行维护ETL工具,增加了运维难度,无法专注于业务应用的开发。

  • 数据实时性降低:部分ETL流程涉及周期性的批量更新,在近实时的应用场景中,无法快速产生分析结果。

为了解决这些问题,阿里云瑶池数据库提供了无感数据集成(Zero-ETL)功能,可以快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统(OLTP)的数据自动提取、转换清洗和加载到数据仓库(OLAP),从而一站式完成数据同步和管理,实现事务处理和数据分析一体化,帮助客户专注于数据分析业务。

功能优势

  • 简单易用:用户无需创建和维护执行ETL(提取、转换、加载操作)的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注于上层应用开发。

  • 零成本:Zero-ETL链路不额外收费,可免费实现在数据仓库中对上游数据进行分析。

  • 多源汇聚:通过Zero-ETL链路将多个实例中的数据实时同步至一个ClickHouse实例中,构建全局分析视角。

    说明

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

支持地域

华北2(北京)、华东1(杭州)、华东2(上海)和华南1(深圳)

说明

后续将支持更多地域,具体以ClickHouse控制台为准。

支持链路

RDS MySQL->ClickHouse

费用说明

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

前提条件

注意事项

云数据库ClickHouse集群Zero-ETL链路数超过限制时,将无法创建新Zero-ETL链路。您可以使用DTS创建新的同步链路,或删除不再使用的Zero ETL链路以创建新的链路。Zero-ETL链路条数限制信息如下:

  • 企业版集群可建条数:[集群CCU下限/8]计算时向上取整,例如集群CCU下限为22CCU,上限为36CCU,则取集群的弹性下限22来计算可创建的链路数,计算结果为22/8=2.75,向上取整后为3,即允许创建的Zero-ETL链路上限为3。

  • 社区版集群可建条数:[集群总核数/8]计算时向上取整,例如集群每个节点规格为8核32GB,有2个节点,则取集群CPU的总核数8*2=16来计算可创建的链路数,计算结果为16/8=2,即允许创建的Zero-ETL链路上限为2。

准备工作

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

  1. 创建服务关联角色AliyunServiceRoleForClickHouseZeroETL

    说明

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

    image

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

    RAM用户必须具备以下三种权限,才可以成功创建Zero-ETL链路。如何给RAM用户授权,请参见为RAM用户授权

    • 源端RDS MySQL的权限:AliyunRDSFullAccess。

    • 目标端ClickHouse的权限:AliyunClickHouseFullAccess。

    • DTS的权限:DTS的自定义策略脚本如下,如何创建自定义权限,请参见创建自定义权限策略

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

同步数据

步骤一:进入无感数据集成(Zero-ETL)页面

  1. 登录云数据库ClickHouse控制台

  2. 在页面左上角,选择目标集群所在的地域。

  3. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  4. 集群信息页面的左侧导航栏,单击无感集成(Zero-ETL),进入无感数据集成(Zero-ETL)页面。

步骤二:创建Zero-ETL任务并启动任务

无感数据集成(Zero-ETL)页面,单击创建Zero-ETL任务,进入创建Zero-ETL任务页面。

填写任务名称,并完成以下配置

  1. 配置源库及目标库。

    根据下述参数配置源库及目标库,配置完成后,单击测试连接以进行下一步

    源库信息

    源库信息

    说明

    数据库类型

    仅支持RDS for MySQL。

    接入方式

    仅支持云实例

    实例地区

    选择源实例所属地域。

    RDS实例ID

    RDS MySQL实例ID。

    数据库账号

    RDS MySQL实例的数据库账号。

    数据库密码

    RDS MySQL数据库账号的密码。

    连接方式

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

    目标库信息

    目标库信息

    说明

    数据库类型

    ClickHouse

    接入方式

    仅支持云实例接入。

    实例地区

    目标库的集群所属地域。

    集群ID

    目标库的集群ID。

    集群类型

    集群的类型分为社区版和企业版。

    数据库账号

    目标库集群的数据库账号。

    数据库密码

    目标库集群的数据库账号的密码。

  2. 配置Zero-ETL。

    源库对象框的多选框中选择待同步对象,然后单击image将其移动至已选择对象框,单击下一步配置库表字段

    image

  3. 配置库表字段

    库表列配置页面,配置待同步表在目标库中的类型主键列排序键分布键分区键信息。

    说明
    • 页面默认展示未定义的表信息,您可以将定义状态选择为全部后进行修改。

    • 主键列排序键可以是组合键,即您可以在对应的下拉框中选择多个字段作为主键列排序键,且需要从主键列中选择一个或者多个列作分区键分布键只能选择一个字段。更多关于主键列、排序键、分区键的信息,请参见CREATE TABLE

    • 分区键可以不设置,但不可以选择为可空的字段,否则同步任务将会失败。

  4. 保存任务。

    配置库表字段完成后,单击下一步保存任务并预检查

    说明

    此操作完成后,无论预检查是否通过,任务创建均已保存。

  5. 预检查并启动任务。

    预检查通过率显示为100%时,单击启动,启动Zero-ETL任务。

    您可以在无感数据集成(Zero-ETL)页面,查看目标Zero-ETL任务的名称源/目标运行状态等信息。

    如果预检查失败,根据失败信息调整源库和目标库后,可以在无感数据集成(Zero-ETL)页面找到目标任务,进行任务修改,重新进行预检查。待预检查成功后,即可启动任务。

监控Zero-ETL任务

监控Zero-ETL任务有以下几种方式,建议您选择监控告警或订阅事件及时获取任务情况,在任务异常时,可结合主动查看方式,进行任务排查。

监控方式

优势

劣势

操作

主动查看

可全方面查看任务状况,比如同步性能、同步详情、任务日志等。

Zero-ETL任务异常时无法主动通知您处理异常。

通过ClickHouse控制台监控

告警监控

根据报警规则,云监控系统会自动发送报警通知,以帮助您及时获取异常监控数据并迅速进行处理。

仅支持监控Zero-ETL任务的同步延迟(毫秒)情况。

云监控ZeroETL延迟告警监控

订阅事件

当Zero-ETL的系统事件达到报警条件时,云监控将自动发送报警通知,以便您及时了解任务的异常与恢复情况,并迅速采取相应措施。

仅支持监控Zero-ETL任务的失败和恢复。

云监控Zero-ETL任务事件订阅

通过ClickHouse控制台监控

  1. 登录云数据库ClickHouse控制台

  2. 在页面左上角,选择目标集群所在的地域。

  3. 集群列表页面,选择社区版实例列表,单击目标集群ID。

  4. 集群信息页面的左侧导航栏,单击无感集成(Zero-ETL)

  5. 在无感数据集成(Zero-ETL)页面,单击目标任务操作列的任务详情

    在任务详情页面,您可以对任务进行全面信息查看与监控。image

云监控ZeroETL延迟告警监控

通过云监控,您可以创建告警规则以监测ZeroETL延迟情况。当监测指标达到报警条件时,云监控系统将自动发送报警通知,帮助您及时获取异常监控数据并迅速进行处理。

步骤一:创建ZeroETL延迟告警

如何创建ZeroETL延迟告警,请参见通过云监控控制台。创建时,请务必注意以下参数的填写。

参数

说明

产品

固定选择云数据库Clickhouse - ZeroETL延迟。

监控指标

固定选择同步延迟。

步骤二:查看集群延迟情况

  1. 登录云监控 CloudMonitor (aliyun.com)

  2. 云数据库Clickhouse - ZeroETL延迟列表,单击目标集群操作列的监控图表,查看集群同步延迟情况。

云监控Zero-ETL任务事件订阅

如果您需要监控Zero-ETL任务的恢复与失败情况,且能及时得到通知,您可以对相关事件进行订阅。

如何订阅Zero-ETL事件,请参见管理事件订阅。在创建订阅策略时,请务必注意以下参数的填写。

订阅事件

参数

说明

Zero-ETL任务失败

订阅类型

固定选择系统事件。

产品

固定选择云数据库Clickhouse。

事件类型

固定选择异常。

事件名称

固定选择ZeroETL任务异常。

Zero-ETL任务恢复

订阅类型

固定选择系统事件。

产品

固定选择云数据库Clickhouse。

事件类型

固定选择Restore。

事件名称

固定选择ZeroETL任务恢复。