全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
数据集成

HybridDB for MySQL通过数据集成导入/导出

更新时间:2017-12-04 16:43:40

数据集成(Data Integration)是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点,可为20多种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。详情请参见 支持的数据源类型

本文将为您介绍如何通过数据集成在HybridDB for MySQL中进行数据的导入导出操作。

应用场景

  • HybridDB for MySQL可以通过数据集成的同步任务将数据同步到到其他的数据源中,并对数据进行相应的处理。

  • 也可以通过数据集成的同步任务将处理好的其他数据源数据同步到HybridDB for MySQL。

流程概述

liu3.jpg

步骤1:数据源端新建表。

步骤2:新增数据源。

步骤3:向导模式或脚本模式配置同步任务。

步骤4:运行同步任务,检查目标端的数据质量。

准备工作

  1. 开通阿里云主账号,并建好账号的访问秘钥,即AccessKeys。

  2. 开通MaxCompute,这样会自动产生一个默认的MaxCompute数据源,并使用主账号登录DataWorks。

  3. 创建项目。您可以在项目中协作完成工作流,共同维护数据和任务等,因此使用DataWorks之前需要先创建一个项目。

    注意

    如果您想通过子账号创建数据集成任务,可以赋予其相应的权限。详情请参见准备RAM子账号项目成员管理

HybridDB for MySQL准备工作

  1. 进行数据导入操作前,首先通过MySQL客户端创建好HybridDB for MySQL中需要迁入数据的目标数据库和表。

  2. 当需要迁出数据的源数据库为阿里云RDS时,请通过RDS的管理控制台进行IP白名单设置,详情请参见添加白名单

    通过HybridDB for MySQL的管理控制台进入白名单设置添加下列IP地址:

    10.152.69.0/24,10.153.136.0/24,10.143.32.0/24,120.27.160.26,10.46.67.156,120.27.160.81,10.46.64.81,121.43.110.160,10.117.39.238,121.43.112.137,10.117.28.203,118.178.84.74,10.27.63.41,118.178.56.228,10.27.63.60,118.178.59.233,10.27.63.38,118.178.142.154,10.27.63.15,100.64.0.0/8

    如下图所示:

    1

    注意

    若使用自定义资源组调度HybridDB for MySQL数据同步任务,必须把自定义资源组的机器IP也加到HybridDB for MySQL的白名单中。

操作步骤

数据源端新建表

您可以使用建表语句或直接通过客户端建表,不同的数据源请参见相应数据库的官方文档进行创建。

新增数据源

注意:

只有项目管理员角色才能够新建数据源,其他角色的成员仅能查看数据源。

本文以添加HybridDB for MySQL的数据源为例(添加HybridDB for MySQL数据源和添加MySQL数据源的操作一致):

  1. 以开发者身份进入DataWorks管理控制台,单击对应项目操作栏中的进入工作区

  2. 单击顶部菜单栏中的数据集成,导航至数据源页面。

  3. 单击新增数据源,弹出支持的数据源类型。如下图:


  4. 选择数据源类型为MySQL。

    有公网IP


    配置项说明:

    • 数据源类型:有公网IP。

    • 数据源名称: 由英文字母、数字、下划线组成且需以字符或下划线开头,长度不超过60个字符。

    • 数据源描述: 对数据源进行简单描述,不得超过80个字符。

    • JDBC URL:JDBC连接信息,格式是 jdbc:mysql://ServerIP:Port/Database 。

    • 用户名/密码:数据库对应的用户名和密码。

  5. 单击测试连通性

  6. 测试连通性通过后,单击确定

测试连通性说明

  • 经典网络下,能够提供测试连通性能力,可以判断输入的JDBC URL,用户名/密码是否正确。

  • 专有网络无公网IP,目前不支持数据源连通性测试,直接单击确认

向导模式或脚本模式配置同步任务

通过数据集成导入数据

以向导模式将MaxCompute(原ODPS)数据同步到MySQL为例:

  1. 进入数据集成页面,新建同步任务,如下图所示:

    1

    • 向导模式:向导模式是可视化界面配置同步任务,共五步:选择来源,选择目标,字段映射,通道控制,预览保存。在每个不同的数据源之间,这几步的界面可能有不同的内容,向导模式可以转换成脚本模式。

    • 脚本模式:进入脚本界面你可以选择相应的模板,此模板包含了同步任务的主要参数,将相关的信息填写完整,但是脚本模式不能转化成向导模式。

  2. 选择来源。

    选择odps数据源及源头表a1,数据浏览默认是收起的,选择后单击下一步,如下图所示:

    y02.jpg

  3. 选择目标。

    选择mysql数据源及目标表writer,选择后单击下一步,如下图所示:

    m02.jpg

    • 导入前准备语句:执行数据同步任务之前率先执行的SQL语句,目前向导模式只允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如清除旧数据。

    • 导入后准备语句:执行数据同步任务之后执行的SQL语句,目前向导模式只允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如加上某一个时间戳。

    • 主键冲突: 选择导入模式,可以支持insert/replace/insert ignore方式。

      • insert指当主键/唯一性索引冲突,数据集成视为脏数据进行处理。

      • replace指没有遇到主键/唯一性索引冲突时,与insert行为一致,当主键/唯一性索引冲突时会用新行替换原有行所有字段。

      • insert ignore指当主键/唯一性索引冲突,数据集成将直接忽略更新丢弃,并且不记录。

  4. 映射字段。

    单击下一步,选择字段的映射关系。需对字段映射关系进行配置,左侧源头表字段和右侧目标表字段为一一对应的关系,如下图所示:

    o04.jpg | center

    映射字段数据源端添加一行的功能,如下所示:

    可以输入常量,输入的值需要使用英文单引号包括,如’abc’、’123’等。

    可以配合调度参数使用,如${bdp.system.bizdate} 等。

    可以输入关系数据库支持的函数,如now()、count(1)等。

    如果您输入的值无法解析,则类型显示为’-’。

  5. 通道控制。

    单击下一步,配置作业速率上限和脏数据检查规则,如下图所示:

    g02.jpg

    • 作业速率上限:指数据同步作业可能达到的最高速率,其最终实际速率受网络环境、数据库配置等的影响。

    • 作业并发数:作业速率上限=作业并发数*单并发的传输速率。

    注意

    当作业速率上限已选定的情况下,应该如何选择作业并发数?

    • 如果你的数据源是线上的业务库,建议您不要将并发数设置过大,以防对线上库造成影响。

    • 如果您对数据同步速率特别在意,建议您选择最大作业速率上限和较大的作业并发数。

  6. 预览保存。

    完成上述配置后,上下滚动鼠标可查看任务配置,如若无误,单击保存,如下图所示:

    yl01.jpg

脚本模式配置同步任务:

  1. {
  2. "type": "job",
  3. "version": "1.0",
  4. "configuration": {
  5. "reader": {
  6. "plugin": "odps",
  7. "parameter": {
  8. "datasource": "odps_first",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
  9. "table": "a1",//源端表名
  10. "partition": "pt=${bdp.system.bizdate}",//分区信息
  11. "column": [//源端表列名
  12. "id",
  13. "col1"
  14. ]
  15. }
  16. },
  17. "writer": {
  18. "plugin": "mysql",
  19. "parameter": {
  20. "datasource": "l_MySQL",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
  21. "table": "writer",//
  22. "preSql": [],//导入前准备语句
  23. "postSql": [],//导入后准备语句
  24. "writeMode": "replace",//写入方式
  25. "column": [//目标表的列名
  26. "id",
  27. "name"
  28. ]
  29. }
  30. },
  31. "setting": {
  32. "speed": {
  33. "mbps": 6,//同步能达到的最大数率
  34. "concurrent": 6//并发数
  35. }
  36. }
  37. }
  38. }

通过数据集成导出数据

以向导模式配置MySQL同步到MaxCompute为例:

  1. 进入数据集成 页面,新建同步任务,如下图所示:

    k01.jpg | center

  2. 选择来源。

    选择mysql数据源及源头表person,数据浏览默认是收起的,选择后单击下一步,如下图所示:

    y01.jpg

    • 数据过滤:在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate。

      where条件可以有效地进行业务增量同步。如果不填写where语句,包括不提供where的key或者value,数据同步均视作同步全量数据。

      不可以将where条件指定为limit 10,这不符合MySQL SQL WHERE子句约束。

    • 切分键:MySQL Reader进行数据抽取时,如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片,数据同步因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。

      • 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。

      • 目前splitPk仅支持整型数据切分,不支持字符串、浮点、日期等其他类型。如果您指定其他非支持类型,忽略splitPk功能,使用单通道进行同步。

      • 如果splitPk不填写,包括不提供splitPk或者splitPk值为空,数据同步视作使用单通道同步该表数据 。

  3. 选择目标。

    选择odps数据源及目标表a1,选择后单击下一步,如下图所示:

    m01.jpg

    • 导入前准备语句(preSql):执行数据同步任务之前率先执行的SQL语句,目前向导模式只允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如清除旧数据。

    • 导入后准备语句(postSql):执行数据同步任务之后执行的SQL语句,目前向导模式只允许执行一条SQL语句,脚本模式可以支持多条SQL语句,例如加上某一个时间戳。

  4. 映射字段。

    单击下一步,选择字段的映射关系。需对字段映射关系进行配置,左侧源头表字段和右侧目标表字段为一一对应的关系,如下图所示:

    ys02.jpg

  5. 通道控制。

    单击下一步,配置作业速率上限和脏数据检查规则,如下图所示:

    m04.jpg | center

    • 作业速率上限:指数据同步作业可能达到的最高速率,其最终实际速率受网络环境、数据库配置等的影响。

    • 作业并发数:作业速率上限=作业并发数*单并发的传输速率。

    注意

    当作业速率上限已选定的情况下,应该如何选择作业并发数?

    • 如果你的数据源是线上的业务库,建议您不要将并发数设置过大,以防对线上库造成影响。

    • 如果您对数据同步速率特别在意,建议您选择最大作业速率上限和较大的作业并发数。

  6. 预览保存。

    完成上述配置后,上下滚动鼠标可查看任务配置,如若无误,单击保存,如下图所示:

    yl02.jpg

脚本模式配置同步任务

  1. {
  2. "type": "job",
  3. "version": "1.0",
  4. "configuration": {
  5. "reader": {
  6. "plugin": "mysql",
  7. "parameter": {
  8. "datasource": "mysql",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
  9. "where": "",
  10. "splitPk": "id",//切分键
  11. "connection": [
  12. {
  13. "table": [
  14. "person"//源端表名
  15. ],
  16. "datasource": "mysql"
  17. }
  18. ],
  19. "column": [//源端表的列名
  20. "id",
  21. "name"
  22. ]
  23. }
  24. },
  25. "writer": {
  26. "plugin": "odps",
  27. "parameter": {
  28. "datasource": "odps_first",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
  29. "table": "a1",//目标端的表名
  30. "truncate": true,
  31. "partition": "pt=${bdp.system.bizdate}",//分区信息
  32. "column": [//目标端表的列名
  33. "id",
  34. "col1"
  35. ]
  36. }
  37. },
  38. "setting": {
  39. "speed": {
  40. "mbps": "9",//同步能达到的最大数率
  41. "concurrent": "7"//并发数
  42. }
  43. }
  44. }
  45. }

运行同步任务,检查目标端的数据质量

运行结果,如下图所示:

yunx01.jpg

注意:

同步任务保存后,直接单击运行,任务会立刻运行或单击右边的提交,将同步任务提交到调度系统中,调度系统会按照配置属性在从第二天开始自动定时执行,相关调度的配置请参见调度配置介绍

其他的配置同步任务详细信息请参见下述文档:

本文导读目录