本文介绍如何使用数据管理DMS任务编排高效地实现事件调度。
背景信息
传统的数据库事件调度(如MySQL的事件调度器Event Scheduler)虽然功能强大,但在使用过程中仍发现一些不足:
- 门槛高:用户需要掌握事件定义的特殊SQL语法(
CREATE EVENT
、ALTER EVENT
),无法通过简单的界面完成配置。 - 强依赖数据库内核:内核需要支持并开启事件调度器。
- 受限单个数据库:只能针对单个数据库进行调度,无法与其他数据库或工具进行联动。
- 难追踪:无法查看调度事件的执行状态、执行历史、运行时长等信息。
- 难运维:无法对事件执行暂停、重跑等操作,事件执行失败也无法恢复。
- 无通知:事件执行状态(成功或失败)无法主动通知到用户(短信、Email等)。
为解决这些问题,我们推荐您使用DMS的任务编排功能,它并不依赖数据库内核的事件调度能力,而是一个外部独立的任务编排与调度系统。任务编排功能的特点如下:
- 支持十几种数据库引擎(MySQL、Oracle、PostgreSQL、SQL Server等)和多种生态工具(数据迁移、备份、跨库分析等),可以轻松实现跨库、跨产品功能组合联动。
- 支持可视化的编辑界面,可以通过拖拽和简单的配置即可创建出十分复杂的调度任务。
- 支持多种消息通知机制(钉钉、短信、邮件等)。
- 支持暂停、终止、重跑等多种运维操作。
操作步骤
本示例通过DMS任务编排实现event_click_archive
事件。该事件的描述:希望从2020年12月1日开始,每天0点钟把user_click
表中两天前的数据转储到click_history
表(历史表)中并删除user_click
表中的对应数据,user_click
表中始终只保留当前日期前一天的数据。
该事件的SQL代码如下。
DELIMITER |
CREATE EVENT IF NOT EXISTS event_click_archive
ON SCHEDULE EVERY 1 DAY STARTS '2020-12-01 00:00.00'
ON COMPLETION PRESERVE
COMMENT '定期归档user_click表数据'
DO
BEGIN
INSERT INTO click_history SELECT * FROM user_click
WHERE create_time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY);
DELETE FROM user_click WHERE create_time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY);
END |
DELIMITER ;
后续步骤
您可以在运维中心查看任务运行结果。

说明 运维中心页面展示了任务流每一次执行的状态(成功、失败、执行中)与起止时间,同时您也可以在该页面进行运维操作(暂停、重跑等)。
在文档使用中是否遇到以下问题
更多建议
匿名提交