全部產品
Search
文件中心

AnalyticDB:DMS調度XIHE SQL

更新時間:Jul 27, 2024

AnalyticDB for MySQL數倉版湖倉版都支援使用DMS的任務編排功能來編排、調度、管理和監控AnalyticDB for MySQL任務。本文介紹如何通過DMS來進行任務開發與調度。

背景資訊

  • 挑戰和訴求:事件調度

    傳統的資料庫事件調度(如MySQL的事件調度器Event Scheduler)雖然功能強大,但在使用過程中仍發現一些不足:

    • 門檻高:使用者需要掌握事件定義的特殊SQL文法(CREATE EVENTALTER EVENT),無法通過簡單的介面完成配置。

    • 強依賴資料庫核心:核心需要支援並開啟事件調度器。

    • 受限單個資料庫:只能針對單個資料庫進行調度,無法與其他資料庫或工具進行聯動。

    • 難追蹤:無法查看調度事件的執行狀態、執行歷史、運行時間長度等資訊。

    • 難營運:無法對事件執行暫停、重跑等操作,事件執行失敗也無法恢複。

    • 無通知:事件執行狀態(成功或失敗)無法主動通知到使用者(簡訊、郵件等)。

  • 解決方案:DMS任務編排

    DMS的任務編排功能即可解決上述問題,它並不依賴資料庫核心的事件調度能力,而是一個外部獨立的任務編排與調度系統。任務編排功能的特點如下:

    • 支援多種資料庫引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多種生態工具(資料移轉、備份、跨庫分析等),可以實現跨庫、跨產品功能組合聯動。

    • 支援可視化的編輯介面,可以通過拖拽和簡單的配置建立調度任務。

    • 支援多種訊息通知機制(DingTalk、簡訊、郵件等)。

    • 支援暫停、終止、重跑等多種營運操作。

樣本資料

本文樣本的資料庫名為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 for 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控制台後,需要先在彈出的對話方塊中輸入目標資料庫帳號的密碼才可進行後續操作。關於管控模式的更多詳情,請參見管控模式

    • 印尼(雅加達)地區的AnalyticDB for MySQL叢集暫不支援一站式資料管理功能。

  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. 在介面右側,查看任務流是否發布的狀態。

      • 發行:該任務流處於發行狀態。

      • 未發布:該任務流處於未發布狀態。