如何创建RDS MySQL定时任务?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: RDS MySQL支持通过事件调度器(Event Scheduler)实现定时任务,如数据清理、统计报告等。需先开启Event Scheduler,再通过DMS或SQL创建、查看、删除事件,自动化执行数据库操作,提升运维效率。

当您需要在RDS MySQL中执行定时和周期性任务,例如定时发送统计报告、定时同步数据或定期清理过期数据等时,您可以使用事件调度(Event Scheduler)功能,根据预定计划自动执行数据库中定义的事件。

Event Scheduler 是 MySQL 中用于执行定时任务的组件,它允许用户在指定时间或按固定间隔自动执行 SQL 语句。

准备工作:
已拥有阿里云账号,若在上云或数据库迁移上云过程中有不懂的,可寻翼龙云助力免卡上云用云。
已创建具备目标数据库EVENT权限的RDS MySQL账号,即高权限账号、普通账号(读写)或普通账号(仅DML)。

步骤一:开启Event Scheduler

请首先确认Event Scheduler已被启用,随后再进行定时任务的创建。

1.访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
2.在左侧导航栏中单击参数设置。
3.在可修改参数页搜索event_scheduler,并确保运行参数值设置为ON。
4.如果修改了该参数值,请单击提交参数,并在弹出的窗口中,选择立刻生效,并单击确定。

步骤二:创建定时任务

通过DMS控制台创建
1.单击页面右上角的登录数据库,进入DMS的快捷登录页面,使用RDS MySQL账号登录数据库实例,详情请参见通过DMS登录RDS数据库。
说明:登录数据库实例时,管控模式选为自由操作。DMS管控模式的更多信息请参见管控模式。
2.在SQLConsole窗口中执行如下SQL创建测试表students。
说明:如果使用数据库中已经存在的表,可以跳过此步骤,并在后续的事件语句中使用相应的SQL语句。
CREATE TABLE students (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
name varchar(64) NOT NULL COMMENT 'name',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3.在SQL窗口的可视化操作区域单击可编程对象,并在事件上单击鼠标右键,选择新建(事件)。
181.jpg

4.在新建(事件)页签,设置事件参数。
本文以事件名称为test01,调度方式为循环时间,间隔为10分钟,事件语句以为测试表students插入数据为例。
事件语句示例:
Begin
INSERT INTO students(name) VALUES('zhangsan');
End
5.单击保存,在弹出的提交变更窗口确认SQL语句无误后,单击直接执行。

您可以在可编程对象页签的事件下查看新增的定时任务。您也可以在SQL窗口执行SHOW EVENTS;,查看定时任务的详细信息。

说明:使用SHOW EVENTS;查询时,如果事件的状态为ENABLED,表示事件已启用。

通过SQL语句创建
CREATE
[DEFINER = user]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
DO event_body;

schedule:
{
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
}
interval:
quantity {
YEAR
| QUARTER
| MONTH
| DAY
| HOUR
| MINUTE
| WEEK
| SECOND
| YEAR_MONTH
| DAY_HOUR
| DAY_MINUTE
| DAY_SECOND
| HOUR_MINUTE
| HOUR_SECOND
| MINUTE_SECOND
}
示例:例如,每天凌晨2点,删除user_order表中30天前的数据,其中user_order表的create_time字段记录了每一行数据的写入时间。
DELIMITER $$CREATE EVENT IF NOT EXISTS delete_old_user_ordersON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '02:00:00') + INTERVAL 1 DAY -- 次日凌晨2点开始 COMMENT --每日删除30天前的订单数据 DOBEGIN -- 删除逻辑(create_time为时间字段) DELETE FROM user_order WHERE create_time < DATE_SUB(NOW(), INTERVAL 30 DAY); -- 可选:记录操作日志(需先创建log表) -- INSERT INTO task_log (message) VALUES ('Deleted old user_orders');END$$
DELIMITER ;

步骤三:查看定时任务执行结果

查看事件的执行结果时,可以通过检查事件中的SQL语句的执行情况来判断。

如果SQL语句执行成功,则可以通过检查相关表来验证结果。

如果SQL语句执行失败,您可以通过查看错误日志来获取更多详细信息。

您可以开启SQL洞察和审计,通过日志记录来查看定时任务的执行结果。

说明:通过执行SQL语句SELECT * FROM information_schema.events;,可以确认现存的定时任务及其相关信息,例如定时任务的创建时间、最后修改时间、最近一次执行时间以及是否处于启用状态等。

步骤四:删除定时任务
数据管理DMS是一款支撑数据全生命周期的一站式数据管理平台。提供全域数据资产管理、数据治理、数据库设计开发、数据集成、数据开发和数据消费等功能,同时DMS内置的数据灾备(DBS)还提供了低成本、高可靠的备份恢复能力,致力于帮助企业高效、安全地挖掘数据价值,助力企业数字化转型。
通过DMS控制台删除
说明:如果您在创建循环事件时,设置了到期删除和结束时间,那么循环事件到期后会自动删除,无需手动删除。
1.在可编程对象页签的事件下,右键单击目标事件,选择删除(事件)。
2.在弹出的窗口,单击直接执行。
说明:您也可以在SQL窗口,执行DROP EVENT <事件名称>;命令,删除对应的事件。
通过SQL语句删除
执行DROP EVENT <事件名称>;命令,删除对应的事件。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 关系型数据库 MySQL
MySQL创建定时任务
MySQL创建定时任务
153 0
|
SQL 关系型数据库 MySQL
OceanBase数据库社区版的MySQL模式支持定时任务
OceanBase数据库社区版的MySQL模式支持定时任务
1015 1
|
6月前
|
人工智能 运维 Java
SpringBoot+MySQL实现动态定时任务
这是一个基于Spring Boot的动态定时任务Demo,利用spring-context模块实现任务调度功能。服务启动时会扫描数据库中的任务表,将任务添加到调度器中,并通过固定频率运行的ScheduleUpdater任务动态更新任务状态和Cron表达式。核心功能包括任务的新增、删除与Cron调整,支持通过ScheduledFuture对象控制任务执行。项目依赖Spring Boot 2.2.10.RELEASE,使用MySQL存储任务信息,包含任务基类ITask及具体实现(如FooTask),便于用户扩展运维界面以增强灵活性。
232 10
|
8月前
|
关系型数据库 MySQL 调度
如何在MySQL中创建定时任务?
MySQL 事件调度器(Event Scheduler)可实现定时任务自动化。例如,每天凌晨清空 `test` 表,并在一个月后自动停止任务。需先启用调度器(`SET GLOBAL event_scheduler = ON`),再创建事件(使用 `CREATE EVENT` 定义执行频率和操作)。推荐用 `TRUNCATE` 提高效率,注意权限与时区设置。为防数据丢失,可结合备份机制。到期后事件自动禁用,建议定期清理。
277 4
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
160 1
|
存储 关系型数据库 MySQL
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
378 1
|
存储 SQL 关系型数据库
MySQL job 定时任务
MySQL job 定时任务
|
关系型数据库 MySQL Shell
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
346 0
|
存储 SQL 关系型数据库
MySQL中定时任务的使用
MySQL中定时任务的使用
174 0
|
存储 Java 关系型数据库
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能,本文主要实现这种Quartz的这种使用方式。
1945 0
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多