云原生数据仓库 AnalyticDB MySQL 版数仓版和企业版、基础版及湖仓版都支持使用DMS的任务编排功能来编排、调度、管理和监控AnalyticDB for MySQL任务。本文介绍如何通过DMS来进行任务开发与调度。
背景信息
挑战和诉求:事件调度
传统的数据库事件调度(如MySQL的事件调度器Event Scheduler)虽然功能强大,但在使用过程中仍发现一些不足:
门槛高:用户需要掌握事件定义的特殊SQL语法(
CREATE EVENT
、ALTER EVENT
),无法通过简单的界面完成配置。强依赖数据库内核:内核需要支持并开启事件调度器。
受限单个数据库:只能针对单个数据库进行调度,无法与其他数据库或工具进行联动。
难追踪:无法查看调度事件的执行状态、执行历史、运行时长等信息。
难运维:无法对事件执行暂停、重跑等操作,事件执行失败也无法恢复。
无通知:事件执行状态(成功或失败)无法主动通知到用户(短信、邮件等)。
解决方案:DMS任务编排
DMS的任务编排功能即可解决上述问题,它并不依赖数据库内核的事件调度能力,而是一个外部独立的任务编排与调度系统。任务编排功能的特点如下:
支持多种数据库引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多种生态工具(数据迁移、备份、跨库分析等),可以实现跨库、跨产品功能组合联动。
支持可视化的编辑界面,可以通过拖拽和简单的配置创建调度任务。
支持多种消息通知机制(钉钉、短信、邮件等)。
支持暂停、终止、重跑等多种运维操作。
示例数据
本文示例的数据库名为adb_test
,并在该库中创建名为orders
、finish_orders
、large_finish_orders
的三张数据表,示例如下:
create database adb_test;
create table orders(
order_id bigint not null comment'order ID',
order_status varchar not null comment'order state',
total_price decimal(15,2) not null comment'total price',
order_date date not null comment'orderdate',
PRIMARY KEY (order_id)
);
create table finish_orders(
order_id bigint not null comment'order ID',
total_price decimal(15,2) not null comment'order state',
order_date date not null comment'total price',
PRIMARY KEY (order_id)
);
create table large_finish_orders(
order_id bigint not null comment'order ID',
total_price decimal(15,2) not null comment'order state',
order_date date not null comment'total price',
PRIMARY KEY (order_id)
);
流程介绍
以云原生数据仓库 AnalyticDB MySQL 版数仓版集群为例,介绍作业调度流程:通过DMS的任务编排功能在AnalyticDB for MySQL数据库的orders
订单表中筛选出已完成且订单金额大于10000元的订单。
步骤 | 说明 |
创建一个任务流。 | |
在此步骤中,您需要在目标任务流中创建如下2个任务节点:
| |
开启目标任务并使其周期性地运行。 |
步骤一:新增任务流
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在数仓版页签,单击目标集群ID。
在左侧导航栏,选择 。
在顶部菜单栏中,选择集成与开发(DTS)。
在左侧导航栏选择 。
新增任务流。本文将任务流命名为订单筛选。
单击新增任务流。
在新建任务流对话框中,输入任务流名称和描述,单击确认。
步骤二:创建任务节点
在订单筛选的任务编排页面,创建并配置以下2个任务节点:
订单清洗
在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。
选中新加入的任务节点,单击图标将其重新命名为
订单清洗
。双击任务节点或单击图标编辑任务节点。
从数据库下拉列表中选择目标数据库。
在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:
insert into finish_orders select order_id,total_price,order_date from orders where order_status = 'F';
说明如果已勾选自动保存,输入SQL语句后会自动保存。
大额订单生成
在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。
选中新加入的任务节点,单击图标将其重新命名为
大额订单生成
。双击任务节点或单击图标编辑任务节点。
从数据库下拉列表中选择目标数据库。
在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:
insert into large_finish_orders select order_id,total_price,order_date from finish_orders where total_price > 10000;
说明如果已勾选自动保存,输入SQL语句后会自动保存。
在任务流画布中,将鼠标放在
订单清洗
节点上,单击节点右侧的小圆圈并将拉出连接线,连接至大额订单生成节点
节点,即可在两个任务节点间连接形成依赖任务流。
步骤三:配置任务流调度
在任务流画布下方的调度配置区域,打开开启调度开关,并配置相关参数。
说明本文示例中将调度任务设置为在2023-02-01至2023-02-28期间的每日01:00周期性运行,您也可以根据业务需要自定义调度任务。更多关于调度配置的参数说明,请参见配置调度。
发布任务流。
单击画布左上角的发布。
在发布对话框中输入备注信息,并单击确认,发布任务流。
确认发布状态。
单击画布上方的前往运维。
在界面右侧,查看任务流是否发布的状态。
已发布:该任务流处于已发布状态。
未发布:该任务流处于未发布状态。