MySQL job 定时任务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL job 定时任务

介绍

MySQL Job是MySQL数据库中的一种定时任务管理工具,它允许用户在指定的时间间隔内自动执行SQL语句或存储过程。

优点:

1. 简单易用:MySQL Job提供了简单的语法和命令,使得用户可以轻松创建和管理定时任务。

2. 灵活性:用户可以根据自己的需求设置任务的执行时间、频率和执行内容,满足不同的业务需求。

3. 可靠性:MySQL Job具有良好的稳定性和可靠性,可以确保任务按时执行,并提供了错误处理和日志记录功能。

缺点:

1. 依赖于MySQL数据库:MySQL Job只能在MySQL数据库中使用,对于其他数据库系统不适用。

2. 单点故障:如果MySQL服务器发生故障或重启,可能会导致定时任务的中断或延迟执行。

3. 限制性:MySQL Job的功能相对简单,对于复杂的定时任务需求可能无法满足。

使用场景:

1. 数据备份和同步:可以使用MySQL Job定时执行备份和同步任务,确保数据的安全性和一致性。

2. 数据清理和维护:可以定时清理过期数据、优化数据库性能、更新统计信息等。

3. 数据报表生成:可以定时生成数据报表,提供给相关人员查看和分析。

4. 数据导入和导出:可以定时执行数据导入和导出任务,实现数据的迁移和交换。

案例

-- 创建一个名为t_mysql_job的表

- id:任务ID,自增主键

- job_name:任务名称

- job_description:任务描述

- job_status:任务状态(0表示未执行,1表示已执行)

- create_time:任务创建时间

- update_time:任务更新时间

创建表
CREATE TABLE t_mysql_job (
  id INT AUTO_INCREMENT PRIMARY KEY,
  job_name VARCHAR(50) NOT NULL,
  job_description VARCHAR(100),
  job_status INT DEFAULT 0,
  create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建定时任务    每一分钟插入一条数据
CREATE EVENT daily_job
ON SCHEDULE EVERY 1 MINUTE
-- 从什么时候开始计时
STARTS SYSDATE()
DO
-- 在这里编写定时任务的逻辑代码
INSERT INTO t_mysql_job (job_name, job_description) VALUES ('Daily Job', 'This is a daily job');
执行结果

-- 查询定时任务    ENABLED--启用    DISABLED--禁用
SELECT T.STATUS,T.* FROM information_schema.EVENTS T WHERE EVENT_NAME = 'daily_job';
-- 查询定时任务
SHOW EVENTS where name = 'daily_job';
 
-- 启用定时任务
ALTER EVENT daily_job ENABLE;
 
-- 禁用定时任务
ALTER EVENT daily_job DISABLE;
 
-- 删除定时任务
DROP EVENT daily_job;
 
-- 创建存储过程    
-- 在MySQL中,创建存储过程时需要使用`DELIMITER`语句来更改分隔符
DELIMITER //
CREATE PROCEDURE ps_insert_mysql_job()
BEGIN
    INSERT INTO t_mysql_job (job_name, job_description) VALUES ('ps_insert_mysql_job', 'This is a daily job');
END //
DELIMITER ;
-- 创建定时任务3分钟执行一次存储过程
CREATE EVENT IF NOT EXISTS my_event
ON SCHEDULE EVERY 3 MINUTE
STARTS SYSDATE()
DO
    CALL ps_insert_mysql_job;
执行结果

-- 查看存储过程
SHOW PROCEDURE STATUS WHERE NAME = 'ps_insert_mysql_job';
 
-- 删除存储过程
DROP PROCEDURE IF EXISTS ps_insert_mysql_job;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 关系型数据库 MySQL
MySQL创建定时任务
MySQL创建定时任务
84 0
|
SQL 关系型数据库 MySQL
OceanBase数据库社区版的MySQL模式支持定时任务
OceanBase数据库社区版的MySQL模式支持定时任务
642 1
|
1月前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
51 1
|
6月前
|
存储 关系型数据库 MySQL
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
197 1
|
7月前
|
关系型数据库 MySQL 数据库
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
137 1
|
7月前
|
关系型数据库 MySQL Shell
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
174 0
|
7月前
|
存储 SQL 关系型数据库
MySQL中定时任务的使用
MySQL中定时任务的使用
79 0
|
存储 关系型数据库 MySQL
MySQL定时任务存储过程函数和动态表名实例
MySQL定时任务存储过程函数和动态表名实例
101 0
|
存储 关系型数据库 MySQL
Navicate设置MySQL定时任务执行存储过程
Navicate设置MySQL定时任务执行存储过程
144 0
|
存储 Java 关系型数据库
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能,本文主要实现这种Quartz的这种使用方式。
979 0
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库