本文为您介绍如何通过创建同步任务,导出MaxCompute中的数据至MySQL数据源中。
前提条件
- 您需要首先通过RDS创建MySQL实例,获取RDS实例ID,并在RDS控制台添加白名单。详情请参见创建RDS MySQL实例。 说明 如果是通过自定义资源组调度RDS的数据同步任务,必须把自定义资源组的机器IP也加入RDS的白名单中。
- 如果您使用的是RDS MySQL数据库,请在RDS MySQL数据库中创建表odps_result,建表语句如下所示。
建表完成后,您可以执行CREATE TABLE `ODPS_RESULT` ( `education` varchar(255) NULL , `num` int(10) NULL );
desc odps_result;
语句,查看表详情。
背景信息
在DataWorks中,通常通过数据集成功能,定期导入系统中产生的业务数据至工作区。SQL任务进行计算后,再定期导出计算结果至您指定的数据源中,以便进一步展示或运行使用。
目前数据集成功能支持从RDS、MySQL、SQL Server、PostgreSQL、MaxCompute、OCS、DRDS、OSS、Oracle、FTP、DM、HDFS和MongoDB等数据源中,导入数据至工作空间或从工作空间导出数据。详细的数据源类型列表请参见支持的数据源与读写插件。
新增数据源
说明 仅项目管理员角色可以新建数据源,其它角色的成员仅支持查看数据源。
- 进入管理中心。
- 单击左侧导航栏的数据源管理。
- 在数据源管理页面,单击右上角的新增数据源。
- 在新增数据源对话框中,选择数据源类型为MySQL。
- 在新增MySQL数据源对话框,配置各项参数。此处以创建阿里云实例模式类型为例。
参数 描述 数据源类型 当前选择的数据源类型为阿里云实例模式。 数据源名称 数据源名称必须以字母、数字、下划线(_)组合,且不能以数字和下划线(_)开头。 数据源描述 对数据源进行简单描述,不得超过80个字符。 适用环境 可以选择开发或生产环境。 说明 仅标准模式工作空间会显示该配置。地区 选择相应的地域。 RDS实例ID 您可以进入RDS控制台,查看RDS实例ID。 RDS实例主账号ID 实例购买者登录DataWorks控制台,鼠标悬停至右上角的用户头像,查看账号ID。 默认数据库名 此处配置的是该数据源对应的默认数据库名称。后续配置同步任务的说明如下:- 配置整库同步(包含实时和离线)或同步解决方案任务时,您可以选择相应RDS实例下所有具有权限的数据库。
- 配置离线同步任务,当您选择使用多个数据库时,则每个数据库均需要配置一个数据源。
用户名 登录数据库的用户名称。 密码 登录数据库的密码。密码中避免使用@符号。 备库设置 如果数据源具备只读实例(备库),可以在配置任务时开启备库设置,并选择备库ID。设置备库的优势是防止干扰主库,不影响主库性能。如果有多个只读实例,则会任选一个可用的来读取。 说明 此功能仅支持独享资源组。 - 测试资源组连通性。在数据集成和任务调度页签下,分别单击相应资源组后的测试连通性,连通状态为可连通时,表示连通成功。说明
- 数据同步时,一个任务只能使用一种资源组。
- 您需要测试每种资源组的连通性,以保证同步任务使用的资源组能够与数据源连通,否则将无法正常执行数据同步任务。
- 测试连通性通过后,单击完成。
新建并配置同步节点
本节将新建一个同步节点write_result并进行配置,目的是把表result_table中的数据写入至自己的MySQL数据库中。具体操作如下:
- 切换至数据开发面板,新建一个离线同步节点write_result。
- 配置同步任务。
- 在业务流程页面,设置write_result节点的上游节点为insert_data节点。
- 在离线同步节点页面,选择数据源( )、表(result_table)为数据来源。
- 选择您新建的MySQL数据源中的表(odps_result)为数据去向。
- 选择字段的映射关系,左侧的源头表字段和右侧的目标表字段为一一对应关系。
- 通道控制。您可以在setting域中进行效率配置,主要包括并发数设置、同步速率设置、同步脏数据设置等信息。
参数 描述 executeMode(分布式处理能力) 用于控制是否开启分布式模式来执行当前任务。 - distribute:开启分布式处理能力。分布式执行模式可以将您的任务切片分散到多台执行节点上并发执行,进而做到同步速度随执行集群规模做水平扩展,突破单机执行瓶颈。
- null:不开启分布式处理能力。配置的并发数据仅仅是单机上的进程并发,无法利用多机联合计算。
重要- 如果独享资源组只有1台机器,不建议使用分布式,因为无法利用多机资源能力。
- 如果单机已经满足速度需要,建议优选单机模式,简化任务执行模式。
- 并发数大于等于8个才能开启分布式处理能力。
- 部分数据与支持分布式模式执行任务,详情请参见具体插件配置文档。
concurrent(任务期望最大并发数) 用于定义当前任务从源端并行读取或并行写入目标端的最大线程数。 说明 由于资源规格等原因,实际执行时并发数可能小于等于此处配置的并发数,调试资源组收费将按照实际执行的并发数收费。详情请参见:性能指标。throttle(同步速率) 用于控制同步速率。 - true:限流。以保护读取端数据库,避免抽取速度过大,给源库造成太大的压力。限速最小配置为1MB/S。说明 throttle设置为true时,您还需要设置mbps(同步速率)参数。
- false:不限流。在不限流的情况下,任务将在所配置的并发数的限制基础上,提供现有硬件环境下最大的传输性能。
说明 流量度量值是数据集成本身的度量值,不代表实际网卡流量。通常,网卡流量是通道流量膨胀的1至2倍,实际流量膨胀取决于具体的数据存储系统传输序列化情况。errorLimit(错误记录数控制) 用于定义脏数据阈值,及对任务的影响。 重要 当脏数据过多时,会影响同步任务的整体同步速度。- 不配置时默认允许脏数据,即任务产生脏数据时不影响任务执行。
- 配置为0,表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。
- 允许脏数据并设置其阈值时:
- 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。
- 若产生的脏数据超出阈值范围,同步任务将失败退出。
说明 脏数据认定标准:脏数据是对业务没有意义,格式非法或者同步过程中出现问题的数据。单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。例如,源端是VARCHAR类型的数据写到INT类型的目标列中,则会因为转换不合理导致脏数据不会成功写入目的端。您可以在同步任务配置时,控制同步过程中是否允许脏数据产生,并且支持控制脏数据条数,即当脏数据超过指定条数时,任务失败退出。
说明 任务整体同步速度除受到上述配置影响外,还受源端数据源性能,同步网络环境等多方面影响,关于同步速率说明与调优,详情请参见离线同步任务调优。 - 预览保存。 完成上述配置后,上下滚动鼠标即可查看任务配置。确认无误后,单击工具栏中的
图标。
提交数据同步任务
同步任务保存后,返回业务流程。单击工具栏中的图标,提交同步任务至调度系统中。调度系统会根据配置的属性,从第二天开始自动定时执行。
后续步骤
现在,您已经学习了如何创建同步任务,将数据导出至不同类型的数据源中,您可以继续下一个教程。在该教程中,您将学习如何设置同步任务的调度属性和依赖关系。详情请参见设置周期和依赖。