本文为您介绍如何使用独享数据集成资源,将您在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、专有网络和虚拟交换机信息。
ECS上的安全组已放通MySQL数据库所使用的端口(默认为3306),详情请参见添加安全组规则,请记录好您的安全组名称。
已成功创建DataWorks工作空间。本文使用DataWorks简单模式工作空间,计算引擎为MaxCompute。请保证您的ECS与DataWorks工作空间处于同一个地域,创建方法请参见创建工作空间。
已完成独享数据集成资源的购买,并且绑定了ECS所在的专有网络VPC。请注意独享资源组必须与ECS同一可用区,详情请参见新增和使用独享数据集成资源组。完成绑定后,您可以在资源组列表查看到您的独享资源组。
在
处查看专有网络、交换机和安全组信息是否和ECS一致。已新增MaxCompute数据源。详情请参见创建MaxCompute数据源。
背景信息
独享资源可以保障您的数据快速、稳定地传输。您购买的独享数据集成资源和需要访问的数据源(即本文中的ECS自建MySQL数据库)必须在同地域同可用区,且和DataWorks工作空间同地域。
操作步骤
在DataWorks上创建MySQL数据源。
进入数据源页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的管理中心,在下拉框中选择对应工作空间后单击进入管理中心。
进入工作空间管理中心页面后,单击左侧导航栏的
,进入数据源页面。
单击新增数据源。
在新增数据源对话框,单击MySQL。
在创建MySQL数据源对话框中,配置各项参数,详情请参见配置MySQL数据源。
本文以连接串模式为例,在连接地址处输入您刚刚记录的ECS私有地址和MySQL的默认端口号3306。
说明当前VPC环境下的自建MySQL数据源暂不支持测试连通性,因此连通性测试失败是正常现象。
单击相应资源组后的测试连通性。
数据同步时,可使用独享数据集成资源组。任务每次运行只能使用一个资源组,如有多个可选择的资源组,需单独测试所选资源组的连通性,以保证同步任务使用的资源组能够与数据源连通,否则将无法正常执行数据同步任务。详情请参见网络连通方案。
测试连通性通过后,单击完成。
创建MaxCompute表。
您需要通过DataWorks创建一个表,用于接收来自MySQL的测试数据。
单击左上角的图标,选择 。
新建一个业务流程,详情请参见创建周期业务流程。
右键单击新建的业务流程,选择 。
输入您的MaxCompute表名称,本例中使用和MySQL数据库表一样的名称good_sale。单击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 );
输入表的中文名后,单击提交到生产环境,完成MaxCompute表good_sale的创建。
配置数据集成任务。
右键单击业务流程,选择 ,创建一个数据集成任务。
选择您的数据来源为您刚添加的MySQL数据源,数据去向选择已添加的MaxCompute数据源,单击转换脚本切换数据集成任务为脚本模式。
此时,如果产生报错或您无法选择数据来源的表,都属于正常现象,直接转换为脚本模式即可。
单击页面右侧的数据集成资源组配置,选中已购买的独享资源组。
如果未切换任务资源组为数据集成独享资源,后续您的任务将无法成功运行。
填写数据集成任务脚本内容如下。
{ "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_source",//目标MaxCompute数据源名称 "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 } } }
单击运行,您可以在下方的运行日志查看数据是否已传输到MaxCompute。
执行结果
您可以新建一个ODPS SQL类型的节点,用于查询当前MaxCompute表中的数据。
输入您的查询语句select * from good_sale ;
,单击运行,即可看到当前已传入MaxCompute表中的数据。