AnalyticDB for MySQL數倉版和湖倉版都支援使用DMS的任務編排功能來編排、調度、管理和監控AnalyticDB for MySQL任務。本文介紹如何通過DMS來進行任務開發與調度。
背景資訊
挑戰和訴求:事件調度
傳統的資料庫事件調度(如MySQL的事件調度器Event Scheduler)雖然功能強大,但在使用過程中仍發現一些不足:
門檻高:使用者需要掌握事件定義的特殊SQL文法(
CREATE EVENT
、ALTER EVENT
),無法通過簡單的介面完成配置。強依賴資料庫核心:核心需要支援並開啟事件調度器。
受限單個資料庫:只能針對單個資料庫進行調度,無法與其他資料庫或工具進行聯動。
難追蹤:無法查看調度事件的執行狀態、執行歷史、運行時間長度等資訊。
難營運:無法對事件執行暫停、重跑等操作,事件執行失敗也無法恢複。
無通知:事件執行狀態(成功或失敗)無法主動通知到使用者(簡訊、郵件等)。
解決方案:DMS任務編排
DMS的任務編排功能即可解決上述問題,它並不依賴資料庫核心的事件調度能力,而是一個外部獨立的任務編排與調度系統。任務編排功能的特點如下:
支援多種資料庫引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多種生態工具(資料移轉、備份、跨庫分析等),可以實現跨庫、跨產品功能組合聯動。
支援可視化的編輯介面,可以通過拖拽和簡單的配置建立調度任務。
支援多種訊息通知機制(DingTalk、簡訊、郵件等)。
支援暫停、終止、重跑等多種營運操作。
樣本資料
本文樣本的資料庫名為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 for 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周期性運行,您也可以根據業務需要自訂調度任務。更多關於調度配置的參數說明,請參見配置調度。
發布任務流。
單擊畫布左上方的發布。
在發布對話方塊中輸入備忘資訊,並單擊確認,發布任務流。
確認發布狀態。
單擊畫布上方的前往營運。
在介面右側,查看任務流是否發布的狀態。
發行:該任務流處於發行狀態。
未發布:該任務流處於未發布狀態。