AnalyticDB MySQL版支持使用DMS的任务编排功能来编排、调度、管理和监控AnalyticDB MySQL任务。本文介绍如何通过DMS来进行任务开发与调度。

背景信息

  • 挑战和诉求:事件调度
    传统的数据库事件调度(如MySQL的事件调度器Event Scheduler)虽然功能强大,但在使用过程中仍发现一些不足:
    • 门槛高:用户需要掌握事件定义的特殊SQL语法(CREATE EVENTALTER EVENT),无法通过简单的界面完成配置。
    • 强依赖数据库内核:内核需要支持并开启事件调度器。
    • 受限单个数据库:只能针对单个数据库进行调度,无法与其他数据库或工具进行联动。
    • 难追踪:无法查看调度事件的执行状态、执行历史、运行时长等信息。
    • 难运维:无法对事件执行暂停、重跑等操作,事件执行失败也无法恢复。
    • 无通知:事件执行状态(成功或失败)无法主动通知到用户(短信、Email等)。
  • 解决方案:DMS任务编排
    DMS的任务编排功能即可解决上述问题,它并不依赖数据库内核的事件调度能力,而是一个外部独立的任务编排与调度系统。任务编排功能的特点如下:
    • 支持十几种数据库引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多种生态工具(数据迁移、备份、跨库分析等),可以轻松实现跨库、跨产品功能组合联动。
    • 支持可视化的编辑界面,可以通过拖拽和简单的配置即可创建出十分复杂的调度任务。
    • 支持多种消息通知机制(钉钉、短信、邮件等)。
    • 支持暂停终止重跑等多种运维操作。

流程介绍

本文示例中,需要通过DMS的任务编排功能在AnalyticDB MySQL版数据库的orders订单表中筛选出已完成且订单金额大于10000的订单,主要流程如下。

说明 本文示例中所用的数据库信息如下:
  • 库名:adb_test
  • 已在数据库中创建了ordersfinish_orderslarge_finish_orders三张表,建表语句如下:
    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)
      ); 
步骤 说明
步骤一:新增任务流 创建一个任务流。
步骤二:创建任务节点 在此步骤中,您需要在目标任务流中创建如下2个任务节点:
  • 订单清洗:从orders订单表中清洗出已完成(即order_status=F)的订单,并将结果写入finish_orders表。
  • 大额订单生成:从finish_orders表中搜索订单金额大于10000(即total_price>10000的订单,并将结果写入large_finish_orders)表。
步骤三:配置任务流调度 开启目标任务并使其周期性地运行。

步骤一:新增任务流

  1. 登录云原生数据仓库AnalyticDB MySQL控制台
  2. 在页面左上角,选择集群所在地域。
  3. 在左侧导航栏,单击集群列表
  4. 3.0集群列表页签下,单击目标集群ID
  5. 在左侧导航栏,选择一站式数据管理 > 任务开发与调度
    说明
    • 若首次通过DMS(新版)登录AnalyticDB MySQL版集群数据库来使用任务开发与调度功能,您需要先完成数据库登录信息录入,登录数据库方法,请参见登录数据库
    • 若之前已登录过AnalyticDB MySQL版集群数据库且集群管控模式为自由操作稳定变更,但在录入数据库登录信息时未选中记住密码,进入DMS控制台后,需要先在弹出的对话框中输入目标数据库账号的密码才可进行后续操作。关于管控模式的更多详情,请参见管控模式
  6. 任务编排页,单击新增任务流
  7. 在弹出的对话框中设置任务流名称(必填,本文以订单筛选为例)和描述(选填),单击确认即可进入任务编排页面。
    2

步骤二:创建任务节点

  1. 订单筛选的任务编排页面,创建并配置以下2个任务节点:
    • 订单清洗
      1. 在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。
      2. 选中新加入的任务节点,单击1图标将其重新命名为订单清洗
      3. 在页面下方的节点信息页签中,从数据库下拉列表中选择目标数据库。
      4. 在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:
        insert into finish_orders
         select order_id,total_price,order_date
         from orders 
         where order_status = 'F';
      4
    • 大额订单生成
      1. 在页面左侧选择单实例SQL,并将其拖拽到右侧空白画布中。
      2. 选中新加入的任务节点,单击1图标将其重新命名为大额订单生成
      3. 在页面下方的节点信息页签中,从数据库下拉列表中选择目标数据库。
      4. 在目标数据库下方的对话框中,输入任务语句,单击保存。语句如下:
        insert into large_finish_orders
         select order_id,total_price,order_date
         from finish_orders 
         where total_price > 10000;
      5
  2. 在任务流画布中,移动鼠标到订单清洗节点上,单击节点右侧的蓝色小圆圈并将鼠标移动至大额订单生成节点节点,即可在两个任务节点间连接形成依赖任务流。
    6

步骤三:配置任务流调度

  1. 在任务流画布下方的调度配置区域,打开开启调度开关,并配置相关参数。
    7
    说明 本文示例中将调度任务设置为在2021-06-01至2021-06-30期间的每日01:00周期性运行,您也可以根据业务需要自定义调度任务。更多关于调度配置的参数说明,请参见配置调度
  2. 单击页面左上角发布
    8
    说明 如需下线任务流,单击下线,并在弹出的对话框中单击确认即可。
  3. 在弹出的对话框中,输入此次任务发布的备注信息,单击确认即可将最新的任务流发布至线上。

后续步骤:管理任务运维

任务发布成功后,单击任务流画布上方的前往运维即可进入任务运维中心。您可以在运维中心查看目标任务的基本属性,如创建时间、创建人等,还可以查看任务的运行记录和发布信息。

11