云原生数据仓库AnalyticDB MySQL版数仓版(3.0)和湖仓版(3.0)都支持使用DMS的任务编排功能来编排、调度、管理和监控AnalyticDB MySQL任务。本文介绍如何通过DMS来进行任务开发与调度。
背景信息
- 挑战和诉求:事件调度传统的数据库事件调度(如MySQL的事件调度器Event Scheduler)虽然功能强大,但在使用过程中仍发现一些不足:
- 门槛高:用户需要掌握事件定义的特殊SQL语法(
CREATE EVENT
、ALTER EVENT
),无法通过简单的界面完成配置。 - 强依赖数据库内核:内核需要支持并开启事件调度器。
- 受限单个数据库:只能针对单个数据库进行调度,无法与其他数据库或工具进行联动。
- 难追踪:无法查看调度事件的执行状态、执行历史、运行时长等信息。
- 难运维:无法对事件执行暂停、重跑等操作,事件执行失败也无法恢复。
- 无通知:事件执行状态(成功或失败)无法主动通知到用户(短信、邮件等)。
- 门槛高:用户需要掌握事件定义的特殊SQL语法(
- 解决方案: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版数仓版(3.0)集群为例,介绍作业调度流程:通过DMS的任务编排功能在AnalyticDB MySQL版数据库的orders
订单表中筛选出已完成且订单金额大于10000元的订单。
步骤 | 说明 |
---|---|
步骤一:新增任务流 | 创建一个任务流。 |
步骤二:创建任务节点 | 在此步骤中,您需要在目标任务流中创建如下2个任务节点:
|
步骤三:配置任务流调度 | 开启目标任务并使其周期性地运行。 |
步骤一:新增任务流
- 登录云原生数据仓库AnalyticDB MySQL控制台。
- 在页面左上角,选择集群所在地域。
- 在左侧导航栏,单击集群列表。
- 在数仓版(3.0)页签下,单击目标集群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周期性运行,您也可以根据业务需要自定义调度任务。更多关于调度配置的参数说明,请参见配置调度。
- 发布任务流。
- 单击画布左上角的发布。
- 在发布对话框中输入备注信息,并单击确认,发布任务流。
- 确认发布状态。