开发者学堂课程【DataWorks一站式大数据开发治理平台精品课程:5.DataWorks 批量生成同步任务】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/81/detail/1242
5.DataWorks 批量生成同步任务
内容介绍
一、添加数据源
二、整库迁移
三、批量上云
四、分库分表,多库多表
内容简介:
1、整库迁移、批量上云、分库分表,三个主题适用场景是批量生成同步任务,假设数据库内有100张表,原本可能需要配置100次数据同步任务,但通过整库迁移或批量上云可以一次性完成了。
2、整库迁移:支持 MySQL、PostgreSQL、SQL ServerDRDSPolarDB、 AnalyticDB for PostgreSQL、HybridDB for MySQLAnalyticDB for MySQL 3.0、Oracle和DM数据源
3、批量上云:目前仅支持MySQL、SQLserver、Oracle数据源。
一、添加数据源
1、新增数据源
2、批量新增数据源
3、克隆数据源
(1)到数据集成界面,数据数据源界面,可以选择添加单个的数据源,也可以批量添加数据源,选择添加单个的数据源,选择 mysql 数据库,选择的是阿里云实例模式,workshop 里面有一个对用户开放的数据源,可以选择数据源,这边已经将数据源添加好,可以看添加好的界面,lzz_domo 是开始添加好的数据源,这边建议开发环境和生产环境都要添加数据源,否则看不到整库迁移的路口。
(2)将信息添加完之后,直接点击测试连通性,测试连通性通过之后,在配置整库迁移和批量上云时,才能选择到相应的数据源。
二、整库迁移
1、高级配置:支持表名、列名称、列类型的映射转换。
- 注意:
整库迁移会自动创建 MaxCompute 表,分区字段为pt ,类型为字符串 String ,格式为yyyymmdd。
(1)做一个相应的 demo,在添加的数据源后面可以看到整库迁移的路口,一般它是在开发环境后面,将 mysql 数据同步到odps _first,下面是添加数据源相应的表,它只是展示其中一部分。
(2)这里有一个高级配置按钮,高级配置按钮一般都是表明转换规则,字段名和字段类型,高级配置相对于批量上云比较简单,批量上云内部的类型比较多,比整库迁移多,配置的转换规则,可以根据的业务的需求对表进行规则转换。像这个例子一般就是在后面加标记,或者将字段类型转换成为其它的字段类型,支持的类型,可以在界面查看。
(3)创建生产表,如果勾选了,提交任务时它会同时创建生产环境的odps _first的表,选择同步方式,每日增量分为每日增量和每日全量,重跑属性默认是运行成功或者失败皆可重跑。增量配置模式有两种,根据增量字段自动生成。显示指定的增量抽取条件,根据增量字段自动生成。
(4)可以在数据字段这里选择的数据库里代表时间的字段,比如输入 time,表里的时间列,在后面可以查看抽取的var条件,后台会自动转化成一个对时间过滤的sql,这都是 where 条件,where 后面的那那一部分sql,这里的sql就是过滤每日增量的数据sql语句,在提交任务之后,可以在数据开发的数据集成任务里面看到过滤条件,就会转换成这样的SQL。
(5)同步并发配置,这边建议用分批上传的逻辑,分批上传的好处是避免对数据库的负载过大影响正常的业务能力,可以按照时间间隔把表拆分为几批运行,如果有主、备库,建议同步任务全部同步备库数据。
并发数设置,每张表都会有1个数据库连接,上限速度为1MB/s,如果同时运行100张表的同步任务,就会有100个数据库进行连接。
注意:选择的表数,和分批上传的表不要超过24小时。
如果每小时同步一张表,分批上传,就在0点时,它会有一张表就在整库迁移这里对应一个数据集成任务。如果上面选的是25张表,这里选的是一小时同步一张表,那就超过了一天的时间,这可能就会出错,建议不要超过一天的时间。对应的后台调度是怎么样的?如果分批上传一个小时同步三张表,它的定时时间是0点,是以0点开始的,0点时间一到,它就会有三个同步任务同时运行,在1点时也有三个任务同时运行。
(6)资源组对应的是数据集成资源组,如果添加了独享数据集成资源组,这里也可以做相应的选择。增量配置模式里面的显示指定的增量抽取条件,可以用ID大于0或者大于1这样设置sql,sql语句不要填where的关键字,选择where后面的。批量上传就是上面选的所有的表创建的同步任务,它都会在零点到30分时,它的定时时间会设置在0点和0.3随机生成,如果选择的表比较多,那么运行的同步任务就会比较多,可能会出现等待资源的情况,这边建议用分批上传。
(7)每日全量,顾名思义就是每天跑全部的数据,对应相应的时间段来写过滤条件,最好是用创建时间和修改时间,选择一个表,提交成功后,出错了,因为这里输入的time没有,可以选择自己有的。
3、提交任务后:可以在数据开---业务流程一找到整库迁移的业务流程,命名格式( clone_ database>数据源名称>odps_ first )节点名称(数据源名_ to_ odps_ first_源端表名)
三、批量上云
表名转关规则也支持正则转换:比如(.+ )匹配所有表头,以ods_$1表示给表头加上前缀ods_。
1、新建一个批量上云的任务。在数据源添加成功了之后,就可以自动扫描到添加成功的数据源,添加的是要接接lzzdemo的mysql数据源,同步的目标端是odps测试的数据源,默认的数据源是PT, PT分区的命名规则一般是pt,后面查数据库时,odps表都会用pt去查,这里用pt可能会报找不到分区。
2、表明转换规则,跟整库迁移差不多,表名转换规则,比如一个正则表达式的,在表名前面都加一个ods的前缀,字段名转换规则,pv_test。字段类型的转换规则,将in型转换为string。新增字段规则,新增一个hello字段,它的类型是string类型。再加一个目标表赋值,hello赋值你好。数据过滤规则,数据过滤规则,这里有一个例子就是修改事件大于biztate,可以根据自己的业务时间填写sql,在开发的数据过滤里面可以看到数字,写pv,因为没有时间段,所以就写一个字段,目标表名转换规则,这里有一个查看内容变量。可以使用的内置变量有:
${db. .type, ,src};来源类型
${db. type, dest}:去向类型
${db. .name, .src}:来源数据源名称
${db. .name, .dest}:去向数据源名称
${db, .table, ,name, ,src}: 来源表名称
${db. .table, .name, .src. _transed}:来源表名转换后名称,如果没有“表名转换规则",此值等于${db. .table, .name, .src}
配置的来源类型,就是从 mysql 到odps,它的来源类型就叫mysql,也有可能就别人就用 oracle,它的来源类型就是 oracle,可以在这里加一个来源类型,也可以加去向类型,数据源名称加的是 lzzdemo,如果加了这个,后面的的目标表名就会有lzzdemo。最后一个是来源表名转换后名称如果没有加表名转换规则,它默认的就是来源表名,加了之后,它就会有以ods为前缀的,再加一个去向。也可以转化为脚本,但是它是不可逆的,就不转换了。执行规则,起名字,命名为 lzz _test0007,一共有15个表。
3、选择一个表,自动提交,这个没有整库迁移那么复杂。前置ods_user_action_mysqllzz_demo,来源,数据源名,上面创建的。
4、执行成功了就可以到数据开发区,一个是数据源名,一个是数据源类型,一个是上面转换规则表名,这样的一个效果也达到了。提交,后数据开发里面就能找到相应的任务。需要注意分区名字的问题。还有odps的数据类型,1.0和2.0,可能在这里有些mysql数分库分表就是在界面时,可以选择多个表和多个数据源,像这张图里面添加数据源,可以直接添加,也可以选择若干个表若干个数据源。
五、常见问题
1、Odps的数据类型问题:
Odps数据类型有1.0的数据类型: https://help.aliyun.com/document _detail/159542.html
2.0数据类型: https://help.aliyun.com/document _detail/1 59541.html关于数据类型这块,有些1.0的数据类型会报类型不匹配,建议直接到数据集成界面配置。
2、以前建表很多用户用dt最为分区名称,但是整库迁移、批量上云默认是以pt作为分区名称,所以可能有部分用户会将分区名称搞错。数据类型不匹配,解决方法是直接到数据开发界面配置,不要用整库迁移或者批量上云的入口。据,它是1.0的,可能不支持,汇报数据类型有问题。
5、在这里可以看到创建批量上云的任务,可以查看相应的日志。表名转关规则也支持正则转换:比如(. + )匹配所有表头,以ods_ $1表示给表头加上前缀ods_。
6、配置完之后,可以查看效果,ddl语句,hello,odps加了一个前缀。同步配置也可以看到。
四、分库分表,多库多表
配置分库分表任务前提条件:
1、源端的表结构要相同。表列都要相同,因为在字段映射时,它只会拉取第一张表的列名数据类型,后面如果跟它不一样,它一定会报错。
2、不同的数据库密码要相同。就是密码要完全相同,否则它就会出现连接不上的问题。
3、多个库要添加多个数据源。







