同构异IP数据源批量抽取实践
同构异IP数据源批量抽取主要是为了解决数据在分库分表时,数据源类型相同、ip不同、库表名称符合特定规律、表结构一致的场景。在此场景下,如果需要抽取各分公司相同表结构的业务表时,需要重复创建几百个仅数据源名称不同的传输任务,极大影响了开发人员的开发效率,通过逻辑数据源的方式能够很好的解决这一问题。
背景
此案例中共准备400张表,分别存在4个同构异IP数据源中,每个数据源下分别有10个库,每个库下分别有10张表(每张表有100条记录)。库名和表名的命名特征如下:设m∈{1,2,3,4},n∈{0,1,2,3,4,5,6,7,8,9},l∈{0,1,2,3,4,5,6,7,8,9},数据源名称:physical_mysqlm,库名:ndi_m_n,表名:t_sharding_m_n_l。需要每天读取4个MySQL数据源下所有分库分表的全量数据,并覆盖写入Hive表。上述4个数据源可事先在数据源管理中完成登记。
示例如下:
数据源名称 | 库名 | 表名 |
---|---|---|
physical_mysql1 | ndi_1_0 | t_sharding_1_0_0 |
t_sharding_1_0_1 | ||
t_sharding_1_0_2 | ||
t_sharding_1_0_3 | ||
t_sharding_1_0_4 | ||
t_sharding_1_0_5 | ||
t_sharding_1_0_6 | ||
t_sharding_1_0_7 | ||
t_sharding_1_0_8 | ||
t_sharding_1_0_9 | ||
physical_mysql1 | ndi_1_1 | t_sharding_1_1_0 |
t_sharding_1_1_1 | ||
t_sharding_1_1_2 | ||
t_sharding_1_1_3 | ||
t_sharding_1_1_4 | ||
t_sharding_1_1_5 | ||
t_sharding_1_1_6 | ||
t_sharding_1_1_7 | ||
t_sharding_1_1_8 | ||
t_sharding_1_1_9 |
配置步骤
本实践案例主要包括逻辑数据源的登记和离线同步任务的创建,其它步骤同普通的数据传输任务配置方法一样因此不再重复。首先,在数据源当中将同构异IP的物理数据源登记为逻辑数据源;其次,在数据传输时,选择逻辑数据源并填写库名和表名的正则表达式;最后,在离线开发中心完成传输任务的调度配置。
登记逻辑数据源
在登记数据源前,首先要在安全中心-权限管理-功能权限中配置相应的登记权限,如下图所示:
在项目配置中,点击项目中心(新)前往数据源管理页面,在该页面中选择登记逻辑数据源按钮进入数据源选择页面。
数据源类型选择MySQL,进入基础信息配置页面。根据业务规划完成数据源名称、数据源标识、归属项目、负责人、管理员的填写。
在添加物理数据源一栏中,点击添加按钮。
搜索数据源名称,并勾选需要添加的数据源。
添加完成后,点击保存。保存成功之后,可在数据源列表页查看逻辑数据源详情,确认无误后请前往数据传输。
创建离线同步任务
离线同步任务配置之前,需要确认是否具有数据传输新建任务的权限以及数据源读写权限。可前往安全中心-权限管理-功能权限中进行配置。
在数据传输-离线同步任务页面,点击新建任务按钮。进入任务配置页面。
首先配置基本信息,根据实际情况填写。在数据来源中将数据源切换成逻辑数据源。
选择数据源类型MySQL,并选择已登记的逻辑数据源logic_distmysql。在库名和表名中分别填写正则表达式如下:
点击解析按钮,预览正则匹配命中的前10张表。
在数据去向中,完成数据源类型等配置。
配置完数据来源和去向之后,字段映射会根据同名映射规则进行配置,确认无误后可点击确定按钮完成任务的整体配置,后续步骤同普通的传输任务,可参考手册相关章节。