全部產品
Search
文件中心

Data Management:任務編排

更新時間:Jun 30, 2024

本文介紹如何使用Data Management任務編排的單一實例SQL節點,將源表中6個月前的資料(歷史資料)遷移(歸檔)至目標表中,並刪除源表中已遷移的資料。

前提條件

  • 已將目標執行個體錄入DMS中。錄入執行個體操作,請參見雲資料庫錄入

  • 執行個體狀態正常。您可在DMS控制台首頁的資料庫執行個體地區,單擊執行個體名稱,查看執行個體狀態。

  • 支援的資料庫類型如下:

    支援的資料庫類型詳情

    • 關係型資料庫:

      • MySQL:RDS MySQLPolarDB MySQL版MyBase MySQLPolarDB分布式版、其他來源MySQL

      • SQL Server:RDS SQL ServerMyBase SQL Server、其他來源SQL Server

      • PostgreSQL:RDS PostgreSQLPolarDB PostgreSQL版MyBase PostgreSQL、其他來源PostgreSQL

      • OceanBase:OceanBase MySQL模式OceanBase Oracle模式、自建OceanBase

      • PolarDB PostgreSQL版(相容Oracle)

      • Oracle

      • 達夢資料庫

      • DB2

    • NoSQL:Lindorm

    • 資料倉儲:

      • AnalyticDB for MySQL

      • AnalyticDB for PostgreSQL

      • DLA

      • MaxCompute

      • Hologres

    • Object Storage Service:OSS

使用限制

若執行個體的管控模式為自由操作或穩定變更時,需保證您為該任務流的責任人,否則在編輯任務流的節點後,可能會導致任務流程執行失敗。若執行個體的管控模式為安全協同,則不存在該考慮。設定任務流責任人的操作,請參見任務編排概述

準備工作

本樣本已提前建立test表,建表語句如下:

-- 建立表
CREATE TABLE test (
    `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主鍵',
      `gmt_create` DATETIME NOT NULL COMMENT '建立時間',
      `gmt_modified` DATETIME NOT NULL COMMENT '修改時間',
    `content` TEXT COMMENT '測試資料'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任務編排測試表';

-- 插入資料
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-01-01 01:00:00', '2020-01-01 01:00:00', 'value1');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-02-01 01:00:00', '2020-02-01 01:00:00', 'value2');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-03-01 01:00:00', '2020-03-01 01:00:00', 'value3');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-04-01 01:00:00', '2020-04-01 01:00:00', 'value4');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-05-01 01:00:00', '2020-05-01 01:00:00', 'value5');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-06-01 01:00:00', '2020-06-01 01:00:00', 'value6');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-07-01 01:00:00', '2020-07-01 01:00:00', 'value7');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-08-01 01:00:00', '2020-08-01 01:00:00', 'value8');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-09-01 01:00:00', '2020-09-01 01:00:00', 'value9');
INSERT INTO test( `gmt_create`, `gmt_modified`, `content`) VALUES ('2020-10-01 01:00:00', '2020-10-01 01:00:00', 'value10');

您可通過SQL視窗或提交資料變更工單建立表。更多資訊,請參見在SQL視窗建立表普通資料變更

操作步驟

步驟一:新增任務流

  1. 登入Data Management 5.0
  2. 在頂部功能表列中,選擇整合與開發(DTS) > 資料開發 > 任務編排

    說明

    若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17表徵圖,選擇全部功能 > 整合與開發(DTS) > 資料開發 > 任務編排

  3. 單擊新增任務流

  4. 建立任務流對話方塊設定任務流名稱描述後,單擊確認

步驟二:配置任務流變數

任務流變數為時間變數,可在所有節點中使用,使用格式為${變數名}。在本文樣本情境中,需要周期性地遷移test表中6個月前的資料,則需要配置時間變數作為篩選條件在SQL語句中使用。

本樣本以yearmonth6_nameyearmonth6_date舉例。

單擊頁面下方的變數配置頁簽,在左側導覽列中單擊任務流變數,配置如下變數:

  • 新增yearmonth6_name變數,格式為yyyy-MM,位移為- 6月

    表示當前日期向前位移6個月(精確至月份),例如當前日期為2023-06-27,該變數的值即為2022-12。

  • 新增yearmonth6_date變數,格式為yyyy-MM-01,位移為- 6月

    表示當前日期向前位移6個月,對應該月份的第一天(精確至日期),例如當前日期為2023-06-27,該變數的值即為2022-12-01。

關於變數的規則與作用詳情,請參見變數概述

步驟三:建立並配置節點

  • 建立遷移資料節點

    1. 任務編排頁面的左側任務類型中,拖曳單一實例SQL節點至頁面中的空白地區。

    2. 按右鍵目標任務節點,選擇重新命名,將節點名稱重新命名為遷移資料節點

    3. 雙擊目標節點,進入編寫SQL頁面。

    4. 在資料庫搜尋方塊中搜尋目標資料庫,並在下方編寫SQL地區輸入以下SQL語句。

      CREATE TABLE IF NOT EXISTS `test_${yearmonth6_name}` LIKE test;
      INSERT INTO `test_${yearmonth6_name}`
      SELECT * FROM `test`
      WHERE gmt_create < '${yearmonth6_date}';

      樣本SQL含義:在當前資料庫下,建立歷史資料的歸檔表test_${yearmonth6_name},並將符合日期要求的歷史資料從test表遷移至該表中。

    5. 單擊預覽,檢驗SQL的正確性。

  • 建立清除歷史資料節點

    1. 任務編排頁面的左側任務類型中,拖曳單一實例SQL節點至頁面中的空白地區。

    2. 單擊目標任務節點,選擇重新命名,將節點名稱重新命名為清除歷史資料節點

    3. 雙擊目標節點,進入編寫SQL頁面。

    4. 在資料庫搜尋方塊中搜尋目標資料庫,並在下方編寫SQL地區輸入以下SQL語句。

      警告

      建議您在業務低峰期使用單一實例SQL節點執行DELETE語句刪除大量資料,以免長時間鎖表導致業務受損。

      DELETE FROM `test` WHERE gmt_create < '${yearmonth6_date}';

      樣本SQL含義:刪除test表中已遷移的資料。

    5. 單擊預覽,檢驗SQL的正確性。

步驟四:串連節點並配置調度資訊

  1. 在任務流中的畫布中,單擊遷移資料節點上的圓點並拉出連接線,串連至清除歷史資料節點

    image.png

    說明

    通過連接線設定任務執行的先後順序。本樣本中,先執行遷移資料節點,再執行清除歷史資料節點

  2. 單擊任務流中畫布下方的任務流資訊頁簽,在調度配置地區配置如下資訊:

    參數

    樣本值

    開啟調度

    開啟開啟調度開關。

    調度類型

    選擇定時調度/周期調度

    生效時間

    調度周期生效的區間,此處選擇預設區間1970-01-01~9999-01-01,表示一直生效。

    調度周期

    選擇按

    指定時間

    選擇每月1號

    具體時間

    調整為01:00

    cron運算式

    不需要手動設定,系統會根據您配置的周期、具體時間自動產生。

    說明

    本樣本的調度配置為每月1號淩晨01:00運行,您可以按需配置調度計劃。更多資訊,請參見任務編排概述

步驟五:運行任務流並驗證

  1. 單擊頁面上方的試運行

    • 如果執行日誌的最後一行出現status SUCCEEDED,表明任務試運行成功。

    • 如果執行日誌的最後一行出現status FAILED,表明任務試運行失敗。

      說明

      如果試運行失敗,請在執行日誌中查看執行失敗的節點和原因,修改配置後重新嘗試。

  2. 前往SQL視窗驗證test表中的歷史資料是否已遷移至目標表,及test表中已遷移的資料是否已被刪除。具體操作,請參見使用SQL語句查詢資料