MySQL job 定时任务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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;


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
9
分享
相关文章
OceanBase数据库社区版的MySQL模式支持定时任务
OceanBase数据库社区版的MySQL模式支持定时任务
756 1
如何在MySQL中创建定时任务?
MySQL 事件调度器(Event Scheduler)可实现定时任务自动化。例如,每天凌晨清空 `test` 表,并在一个月后自动停止任务。需先启用调度器(`SET GLOBAL event_scheduler = ON`),再创建事件(使用 `CREATE EVENT` 定义执行频率和操作)。推荐用 `TRUNCATE` 提高效率,注意权限与时区设置。为防数据丢失,可结合备份机制。到期后事件自动禁用,建议定期清理。
42 4
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
86 1
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
21. Mysql 事件或定时任务,解放双手,轻松实现自动化
221 1
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
446 1
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
241 0
MySQL中定时任务的使用
MySQL中定时任务的使用
104 0