本文为您介绍如何使用独享数据集成资源,将您在ECS上自建的MySQL数据库中的数据,迁移到MaxCompute。

前提条件

  • 已拥有至少一个绑定专有网络VPC的ECS(请勿使用经典网络),并在ECS上安装好MySQL数据库,数据库中已创建好用户和测试数据。本文中ECS自建MySQL的测试数据创建语句如下。
    CREATE TABLE IF NOT EXISTS good_sale(
       create_time timestamp,
       category varchar(20),
       brand varchar(20),
       buyer_id varchar(20),
       trans_num varchar(20),
       trans_amount DOUBLE,
       click_cnt varchar(20)
       );
    insert into good_sale values('2018-08-21','coat','brandA','lilei',3,500.6,7),
    ('2018-08-22','food','brandB','lilei',1,303,8),
    ('2018-08-22','coat','brandC','hanmeimei',2,510,2),
    ('2018-08-22','bath','brandA','hanmeimei',1,442.5,1),
    ('2018-08-22','food','brandD','hanmeimei',2,234,3),
    ('2018-08-23','coat','brandB','jimmy',9,2000,7),
    ('2018-08-23','food','brandA','jimmy',5,45.1,5),
    ('2018-08-23','coat','brandE','jimmy',5,100.2,4),
    ('2018-08-24','food','brandG','peiqi',10,5560,7),
    ('2018-08-24','bath','brandF','peiqi',1,445.6,2),
    ('2018-08-24','coat','brandA','ray',3,777,3),
    ('2018-08-24','bath','brandG','ray',3,122,3),
    ('2018-08-24','coat','brandC','ray',1,62,7) ;
  • 请记录好您的ECS的私有IP专有网络虚拟交换机信息。ECS2
  • ECS上的安全组已放通MySQL数据库所使用的端口(默认为3306),详情请参见添加安全组规则,请记录好您的安全组名称。安全组
  • 已成功创建DataWorks工作空间。本文使用DataWorks简单模式工作空间,计算引擎为MaxCompute。请保证您的ECS与DataWorks工作空间处于同一个地域,创建方法请参见创建工作空间
  • 已完成独享数据集成资源的购买,并且绑定了ECS所在的专有网络VPC。请注意独享资源组必须与ECS同一可用区,详情请参见独享数据集成资源组。完成绑定后,您可以在资源组列表查看到您的独享资源组。资源组
  • 专有网络绑定处查看专有网络交换机安全组信息是否和ECS一致。网络绑定

背景信息

独享资源可以保障您的数据快速、稳定地传输。您购买的独享数据集成资源和需要访问的数据源(即本文中的ECS自建MySQL数据库)必须在同地域同可用区,且和DataWorks工作空间同地域。

操作步骤

  1. 在DataWorks上创建MySQL数据源。
    1. 使用主账号登录DataWorks控制台
    2. 工作空间列表单击进入数据集成
      11
    3. 在左侧导航栏,单击数据源
    4. 单击数据源管理页面右上角的新增数据源
    5. 新增数据源页面,单击MySQL
    6. 新增MySQL数据源对话框中,配置各项参数,详情请参见配置MySQL数据源
      本文以连接串模式为例,在JDBC URL处输入您刚刚记录的ECS私有地址和MySQL的默认端口号3306。连接串模式
      说明 当前VPC环境下的自建MySQL数据源暂不支持测试连通性,因此连通性测试失败是正常现象。
    7. 单击相应资源组后的测试连通性
      数据同步时,一个任务只能使用一种资源组。您需要在每种资源组上单独测试连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。详情请参见数据源测试连通性
    8. 测试连通性通过后,单击完成
  2. 创建MaxCompute表。
    您需要通过DataWorks创建一个表,用于接收来自MySQL的测试数据。
    1. 单击左上角的图标图标,选择全部产品 > DataStudio(数据开发)
    2. 新建一个业务流程,详情请参见创建业务流程
    3. 右键单击新建的业务流程,选择新建 > MaxCompute >
      新建表
    4. 输入您的MaxCompute表名称,本例中使用和MySQL数据库表一样的名称good_sale。单击DDL模式后,输入您的建表语句并生成表结构
      DDL模式本例中使用的建表语句如下,请注意数据类型的转换。
      CREATE TABLE IF NOT EXISTS good_sale(
         create_time string,
         category STRING,
         brand STRING,
         buyer_id STRING,
         trans_num BIGINT,
         trans_amount DOUBLE,
         click_cnt BIGINT
         );
    5. 输入表的中文名后,单击提交到生产环境,完成MaxCompute表good_sale的创建。
      15
  3. 配置数据集成任务。
    1. 右键单击业务流程,选择新建 > 数据集成 > 离线同步,创建一个数据集成任务。
      31
    2. 选择您的数据来源为您刚添加的MySQl数据源,数据去向为默认MaxCompute数据源odps_first,单击转换脚本切换数据集成任务为脚本模式。
      此时,如果产生报错或您无法选择数据来源的,都属于正常现象,直接转换为脚本模式即可。32
    3. 单击页面右侧的数据集成资源组配置,选中已购买的独享资源组。
      如果未切换任务资源组为数据集成独享资源,后续您的任务将无法成功运行。
    4. 填写数据集成任务脚本内容如下。
      {
          "type": "job",
          "steps": [
              {
                  "stepType": "mysql",
                  "parameter": {
                      "column": [//源列名
                          "create_time",
                          "category",
                          "brand",
                          "buyer_id",
                          "trans_num",
                          "trans_amount",
                          "click_cnt"
                      ],
                      "connection": [
                          {
                              "datasource": "shuai",//源数据源
                              "table": [
                                  "good_sale"//源数据库表名,此处必须为方括号数组格式。
                              ]
                          }
                      ],
                      "where": "",
                      "splitPk": "",
                      "encoding": "UTF-8"
                  },
                  "name": "Reader",
                  "category": "reader"
              },
              {
                  "stepType": "odps",
                  "parameter": {
                      "partition": "",
                      "truncate": true,
                      "datasource": "odps_first",//目标数据源
                      "column": [//目标列名
                          "create_time",
                          "category",
                          "brand",
                          "buyer_id",
                          "trans_num",
                          "trans_amount",
                          "click_cnt"
                      ],
                      "emptyAsNull": false,
                      "table": "good_sale"//目标表名
                  },
                  "name": "Writer",
                  "category": "writer"
              }
          ],
          "version": "2.0",
          "order": {
              "hops": [
                  {
                      "from": "Reader",
                      "to": "Writer"
                  }
              ]
          },
          "setting": {
              "errorLimit": {
                  "record": "0"
              },
              "speed": {
                  "throttle": false,
                  "concurrent": 2
              }
          }
      }
    5. 单击运行,您可以在下方的运行日志查看数据是否已传输到MaxCompute。
      123

执行结果

您可以新建一个ODQP SQL类型的节点,用于查询当前MaxCompute表中的数据。新建节点输入您的查询语句select * from good_sale ;,单击运行,即可看到当前已传入MaxCompute表中的数据。222