本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹如何使用數據管理DMS任務編排的單實例SQL節點,將源表中6個月前的數據(歷史數據)遷移(歸檔)至目標表中,并刪除源表中已遷移的數據。
應用場景
DMS的任務編排功能提供了強大的自動化編排和調度能力,滿足數據同步、數據歸檔、數據備份、數據分析、數據挖掘等需求,可幫助企業實現數據管理的自動化和標準化,提高數據管理的效率與質量。
DTS數據遷移節點可用于跨庫、單個表或整個數據庫的數據遷移。
離線數據節點可用于數據庫之間的數據同步。
跨庫Spark SQL節點可用于跨庫數據同步和跨庫數據加工。
AnalyticDB for MySQL Spark節點可用于機器學習、圖像處理、報表分析等場景。
更多信息,請參見任務類型介紹。
前提條件
已將目標實例錄入DMS中。錄入實例操作,請參見云數據庫錄入。
實例狀態正常。您可在DMS控制臺首頁的數據庫實例區域,單擊實例名稱,查看實例狀態。
支持的數據庫類型如下:
關系型數據庫:
MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、其他來源MySQL
SQL Server:RDS SQL Server、MyBase SQL Server、其他來源SQL Server
PostgreSQL:RDS PostgreSQL、PolarDB 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
對象存儲: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');
操作步驟
步驟一:新增任務流
- 登錄數據管理DMS 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語句查詢數據。