通过无感集成(Zero-ETL)同步数据

更新时间:

云原生数据仓库 AnalyticDB MySQL 版提供无感集成(Zero-ETL)功能,支持创建LindormAnalyticDB for MySQL的数据同步链路,帮助您一站式完成数据同步和管理,实现事务处理和数据分析一体化。

方案概述

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

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

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

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

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

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

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

方案优势

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

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

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

支持的同步链路

前提条件

  • AnalyticDB for MySQL集群与Lindorm实例位于同一地域。具体操作,请参见创建实例

    重要

    Lindorm实例必须开通宽表引擎。

  • 已为AnalyticDB for MySQL集群创建数据库账号。具体操作,请参见创建数据库账号

费用说明

同步链路不收取费用。

注意事项

  • 仅部分地域支持无感集成(Zero-ETL)功能:华北2(北京)、华东1(杭州)、华东2(上海)、华南1(深圳)。

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

    • 集群预留资源的ACU总数小于24 ACU,可创建1条Zero-ETL链路。

    • 集群预留资源的ACU总数大于等于24 ACU,可创建3+3*[(总ACU数-24)/50]条Zero-ETL链路。

      [(总ACU数-24)/50]计算时向下取整,例如集群总ACU数为48,计算结果为0.48,取整后为0,允许创建3条Zero-ETL链路。

    说明
    • 湖仓版预留资源的ACU总数指计算预留资源和存储预留资源的ACU总和。

    • 数仓版,1核等于1ACU。弹性模式的预留资源ACU总数指计算资源和弹性IO资源的核数总和。预留模式的预留资源ACU总数指计算资源的核数。

  • 无感集成(Zero-ETL)功能仅支持同步Lindorm实例中的HBase表,SQL表会被过滤。

准备工作

创建AnalyticDB for MySQL服务关联角色

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

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

  3. 单击左侧创建角色

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

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

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

授予RAM用户管理权限

RAM用户创建和管理Zero-ETL链路需要下列两种权限。

授予RAM用户AnalyticDB for MySQL管理权限

RAM用户必须拥有AnalyticDB for MySQL的管理权限AliyunADBFullAccess,才可以创建和管理AnalyticDB for MySQL的Zero-ETL链路。操作步骤,请参见为RAM用户授权

授予RAM用户Zero-ETL管理权限

RAM用户需要具备为数据源实例与目标实例(AnalyticDB for MySQL)创建链路的权限,才能创建和管理Zero-ETL链路。您可以自定义权限策略,允许为数据源和AnalyticDB for MySQL的所有实例创建链路或仅为指定实例创建链路,并将自定义权限策略授权给RAM用户。创建自定义权限策略与RAM用户授权的操作,请参见创建自定义权限策略

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

为所有Lindorm实例和AnalyticDB for MySQL集群授权

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dts:*",
            "Resource": [
                "acs:adb:*:*:*",
                "acs:lindorm:*:*:*",
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dts:DescribeRegions",
                "dts:DescribeConfigRelations",
                "dts:DescribeSrcLinkConfig",
                "dts:DescribeDestLinkConfig",
                "dts:DescribeLinkConfig"
            ],
            "Resource": [
                "acs:dts:*:*:*"
            ]
        }
    ]
}

为指定Lindorm实例和AnalyticDB for MySQL集群授权

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dts:*",
            "Resource": [
                "acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****",
                "acs:lindorm:*:*:dbinstance/ld-bp19yeo38q4****",
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dts:DescribeRegions",
                "dts:DescribeConfigRelations",
                "dts:DescribeSrcLinkConfig",
                "dts:DescribeDestLinkConfig",
                "dts:DescribeLinkConfig"
            ],
            "Resource": "acs:dts:*:*:*"
        }
    ]
}

操作步骤

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。

  2. 进入无感集成(Zero-ETL)功能页面,不同的产品系列功能入口不同。

    • 企业版、基础版或湖仓版集群:在左侧导航栏,选择数据接入 > DB数据同步

    • 数仓版集群:在左侧导航栏,选择数据传输服务 > 无感数据集成

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

    • 配置源库信息:

      源库信息

      说明

      任务名称

      Zero-ETL任务名称。

      数据库类型

      选择Lindorm

      接入方式

      仅支持云实例接入

      实例地区

      Lindorm实例所属地域。

      实例ID

      Lindorm实例ID。

      数据库账号

      连接宽表引擎的用户名和密码。

      如果您忘记用户密码,可以通过Lindorm宽表引擎的集群管理系统修改密码。具体操作,请参见修改用户密码

      数据库密码

    • 配置目标库信息:

      目标库信息

      说明

      数据库类型

      当前目标库仅支持AnalyticDB MySQL 3.0

      接入方式

      仅支持云实例接入

      实例地区

      AnalyticDB for MySQL集群所属的地域。

      实例ID

      AnalyticDB for MySQL的集群ID。

      数据库账号

      AnalyticDB for MySQL集群的数据库账号。

      数据库密码

      AnalyticDB for MySQL集群数据库账号的密码。

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

    配置项目

    说明

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

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

    源库对象和已选择对象

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

    不支持同步Lindorm实例中的整库和整表,需要您在已选择对象区域中,单击源表之后的编辑,编辑待同步的列信息。

    高级配置(选填)

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

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

    库表字段配置

    说明

    数据库名称

    选择已有的数据库。

    表名称

    选择已有的数据表。

    主键列

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

    分布键

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

    类型

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

    定义状态

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

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

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

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

Zero-ETL任务监控与告警

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

  1. 登录云监控控制台

  2. 查看监控信息。

    1. 在左侧导航栏,选择云资源监控 > 云产品监控

    2. 鼠标悬浮在云原生数据仓库AnalyticDB MySQL版卡片上,单击云原生数据仓库AnalyticDB MySQL版3.0 - ZeroETL延迟

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

  3. 创建报警规则。

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

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

      说明

      产品需选择为云原生数据仓库AnalyticDB MySQL版3.0 - ZeroETL延迟

  4. 创建订阅策略。

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

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

      说明
      • 产品:选择分析型数据库MySQL版3.0

      • 事件类型:选择异常Restore

      • 事件名称:选择ZeroETL任务异常ZeroETL任务恢复