本文介紹如何使用Data Management任務編排的單一實例SQL節點,將源表中6個月前的資料(歷史資料)遷移(歸檔)至目標表中,並刪除源表中已遷移的資料。
前提條件
已將目標執行個體錄入DMS中。錄入執行個體操作,請參見雲資料庫錄入。
執行個體狀態正常。您可在DMS控制台首頁的資料庫執行個體地區,單擊執行個體名稱,查看執行個體狀態。
支援的資料庫類型如下:
使用限制
若執行個體的管控模式為自由操作或穩定變更時,需保證您為該任務流的責任人,否則在編輯任務流的節點後,可能會導致任務流程執行失敗。若執行個體的管控模式為安全協同,則不存在該考慮。設定任務流責任人的操作,請參見任務編排概述。
準備工作
本樣本已提前建立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');
操作步驟
步驟一:新增任務流
- 登入Data Management 5.0。
單擊控制台左上方的表徵圖,選擇
。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇
。單擊新增任務流。
在建立任務流對話方塊設定任務流名稱和描述後,單擊確認。
步驟二:配置任務流變數
任務流變數為時間變數,可在所有節點中使用,使用格式為${變數名}
。在本文樣本情境中,需要周期性地遷移test表中6個月前的資料,則需要配置時間變數作為篩選條件在SQL語句中使用。
本樣本以yearmonth6_name
和yearmonth6_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。
關於變數的規則與作用詳情,請參見變數概述。
步驟三:建立並配置節點
建立遷移資料節點
在任務編排頁面的左側任務類型中,拖曳單一實例SQL節點至頁面中的空白地區。
按右鍵目標任務節點,選擇重新命名,將節點名稱重新命名為遷移資料節點。
雙擊目標節點,進入編寫SQL頁面。
在資料庫搜尋方塊中搜尋目標資料庫,並在下方編寫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表遷移至該表中。
單擊預覽,檢驗SQL的正確性。
建立清除歷史資料節點
在任務編排頁面的左側任務類型中,拖曳單一實例SQL節點至頁面中的空白地區。
單擊目標任務節點,選擇重新命名,將節點名稱重新命名為清除歷史資料節點。
雙擊目標節點,進入編寫SQL頁面。
在資料庫搜尋方塊中搜尋目標資料庫,並在下方編寫SQL地區輸入以下SQL語句。
警告建議您在業務低峰期使用單一實例SQL節點執行DELETE語句刪除大量資料,以免長時間鎖表導致業務受損。
DELETE FROM `test` WHERE gmt_create < '${yearmonth6_date}';
樣本SQL含義:刪除test表中已遷移的資料。
單擊預覽,檢驗SQL的正確性。
步驟四:串連節點並配置調度資訊
在任務流中的畫布中,單擊遷移資料節點上的圓點並拉出連接線,串連至清除歷史資料節點。
說明通過連接線設定任務執行的先後順序。本樣本中,先執行遷移資料節點,再執行清除歷史資料節點。
單擊任務流中畫布下方的任務流資訊頁簽,在調度配置地區配置如下資訊:
參數
樣本值
開啟調度
開啟開啟調度開關。
調度類型
選擇定時調度/周期調度。
生效時間
調度周期生效的區間,此處選擇預設區間1970-01-01~9999-01-01,表示一直生效。
調度周期
選擇按月。
指定時間
選擇每月1號。
具體時間
調整為01:00。
cron運算式
不需要手動設定,系統會根據您配置的周期、具體時間自動產生。
說明本樣本的調度配置為每月1號淩晨01:00運行,您可以按需配置調度計劃。更多資訊,請參見任務編排概述。
步驟五:運行任務流並驗證
單擊頁面上方的試運行。
如果執行日誌的最後一行出現
status SUCCEEDED
,表明任務試運行成功。如果執行日誌的最後一行出現
status FAILED
,表明任務試運行失敗。說明如果試運行失敗,請在執行日誌中查看執行失敗的節點和原因,修改配置後重新嘗試。
前往SQL視窗驗證test表中的歷史資料是否已遷移至目標表,及test表中已遷移的資料是否已被刪除。具體操作,請參見使用SQL語句查詢資料。