DMS调度XIHE SQL

云原生数据仓库 AnalyticDB MySQL 版数仓版企业版、基础版及湖仓版都支持使用DMS的任务编排功能来编排、调度、管理和监控AnalyticDB for MySQL任务。本文介绍如何通过DMS来进行任务开发与调度。

背景信息

  • 挑战和诉求:事件调度

    传统的数据库事件调度(如MySQL的事件调度器Event Scheduler)虽然功能强大,但在使用过程中仍发现一些不足:

    • 门槛高:用户需要掌握事件定义的特殊SQL语法(CREATE EVENTALTER EVENT),无法通过简单的界面完成配置。

    • 强依赖数据库内核:内核需要支持并开启事件调度器。

    • 受限单个数据库:只能针对单个数据库进行调度,无法与其他数据库或工具进行联动。

    • 难追踪:无法查看调度事件的执行状态、执行历史、运行时长等信息。

    • 难运维:无法对事件执行暂停、重跑等操作,事件执行失败也无法恢复。

    • 无通知:事件执行状态(成功或失败)无法主动通知到用户(短信、邮件等)。

  • 解决方案:DMS任务编排

    DMS的任务编排功能即可解决上述问题,它并不依赖数据库内核的事件调度能力,而是一个外部独立的任务编排与调度系统。任务编排功能的特点如下:

    • 支持多种数据库引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多种生态工具(数据迁移、备份、跨库分析等),可以实现跨库、跨产品功能组合联动。

    • 支持可视化的编辑界面,可以通过拖拽和简单的配置创建调度任务。

    • 支持多种消息通知机制(钉钉、短信、邮件等)。

    • 支持暂停、终止、重跑等多种运维操作。

示例数据

本文示例的数据库名为adb_test,并在该库中创建名为ordersfinish_orderslarge_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个任务节点:

  • 订单清洗:从orders订单表中清洗出已完成(即order_status=F)的订单,并将结果写入finish_orders表。

  • 大额订单生成:从finish_orders表中搜索订单金额大于10000(即total_price>10000的订单,并将结果写入large_finish_orders表。

步骤三:配置任务流调度

开启目标任务并使其周期性地运行。

步骤一:新增任务流

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在数仓版页签,单击目标集群ID。

  2. 在左侧导航栏,选择一站式数据管理 > 数据资产管理

    说明
    • 若首次通过DMS(新版)登录AnalyticDB for MySQL集群数据库来使用数据资产管理功能,您需要先完成数据库登录信息录入,登录数据库方法,请参见登录数据库

    • 若之前已登录过AnalyticDB for MySQL集群数据库且集群管控模式为自由操作稳定变更,但在录入数据库登录信息时未选中记住密码,进入DMS控制台后,需要先在弹出的对话框中输入目标数据库账号的密码才可进行后续操作。关于管控模式的更多详情,请参见管控模式

  3. 在顶部菜单栏中,选择集成与开发(DTS)

  4. 在左侧导航栏选择数据开发 > 任务编排

  5. 新增任务流。本文将任务流命名为订单筛选。

    1. 单击新增任务流

    2. 新建任务流对话框中,输入任务流名称描述,单击确认

步骤二:创建任务节点

  1. 订单筛选的任务编排页面,创建并配置以下2个任务节点:

    • 订单清洗

      1. 在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。

      2. 选中新加入的任务节点,单击1图标将其重新命名为订单清洗

      3. 双击任务节点或单击2图标编辑任务节点。

      4. 从数据库下拉列表中选择目标数据库。

      5. 在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:

        insert into finish_orders
         select order_id,total_price,order_date
         from orders 
         where order_status = 'F';
        说明

        如果已勾选自动保存,输入SQL语句后会自动保存。

    • 大额订单生成

      1. 在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。

      2. 选中新加入的任务节点,单击1图标将其重新命名为大额订单生成

      3. 双击任务节点或单击2图标编辑任务节点。

      4. 从数据库下拉列表中选择目标数据库。

      5. 在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:

        insert into large_finish_orders
         select order_id,total_price,order_date
         from finish_orders 
         where total_price > 10000;
        说明

        如果已勾选自动保存,输入SQL语句后会自动保存。

  2. 在任务流画布中,将鼠标放在订单清洗节点上,单击节点右侧的小圆圈并将拉出连接线,连接至大额订单生成节点节点,即可在两个任务节点间连接形成依赖任务流。

    6

步骤三:配置任务流调度

  1. 在任务流画布下方的调度配置区域,打开开启调度开关,并配置相关参数。

    说明

    本文示例中将调度任务设置为在2023-02-01至2023-02-28期间的每日01:00周期性运行,您也可以根据业务需要自定义调度任务。更多关于调度配置的参数说明,请参见配置调度

  2. 发布任务流。

    1. 单击画布左上角的发布

    2. 发布对话框中输入备注信息,并单击确认,发布任务流。

  3. 确认发布状态。

    1. 单击画布上方的前往运维

    2. 在界面右侧,查看任务流是否发布的状态。

      • 已发布:该任务流处于已发布状态。

      • 未发布:该任务流处于未发布状态。