任务编排

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何使用数据管理DMS任务编排的单实例SQL节点,将源表中6个月前的数据(历史数据)迁移(归档)至目标表中,并删除源表中已迁移的数据。

应用场景

DMS的任务编排功能提供了强大的自动化编排和调度能力,满足数据同步、数据归档、数据备份、数据分析、数据挖掘等需求,可帮助企业实现数据管理的自动化和标准化,提高数据管理的效率与质量。

  • DTS数据迁移节点可用于跨库、单个表或整个数据库的数据迁移。

  • 离线数据节点可用于数据库之间的数据同步。

  • 跨库Spark SQL节点可用于跨库数据同步和跨库数据加工。

  • AnalyticDB for MySQL Spark节点可用于机器学习、图像处理、报表分析等场景。

更多信息,请参见任务类型介绍

前提条件

  • 已将目标实例录入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

    • 对象存储: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. 登录数据管理DMS 5.0
  2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 集成与开发 > 数据开发 > 任务编排

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择集成与开发 > 数据开发 > 任务编排

  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语句查询数据