DMS调度XIHE SQL
云原生数据仓库 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周期性运行,您也可以根据业务需要自定义调度任务。更多关于调度配置的参数说明,请参见配置调度。 
- 发布任务流。 - 单击画布左上角的发布。 
- 在发布对话框中输入备注信息,并单击确认,发布任务流。 
 
- 确认发布状态。 - 单击画布上方的前往运维。 
- 在界面右侧,查看任务流是否发布的状态。 - 已发布:该任务流处于已发布状态。 
- 未发布:该任务流处于未发布状态。