老生常谈mysql event事件调度器(必看篇)

老生常谈mysql event事件调度器(必看篇)

什么是MySQL事件调度器?

MySQL事件调度器是MySQL的一个内置工具,它可以让数据库中的某些操作自动定期执行,比如说定时备份、定期删除过期数据、清理临时表等操作。

事件调度器通过定义事件来实现自动化定期操作,事件主要由下面三个基本元素组成:

  1. 事件名称

  2. 事件执行时间

  3. 事件任务

如何定义事件?

下面是一个示例的事件定义代码:

CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
  DELETE FROM mytable WHERE date < NOW() - INTERVAL 1 WEEK;

其中,

  • myevent 是事件名称;
  • ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR 表示事件调度时间,即事件将在当前时间过去1小时的时间执行;
  • DELETE FROM mytable WHERE date < NOW() - INTERVAL 1 WEEK 是事件任务,指定了要执行的SQL语句。

事件调度策略可以根据实际需求灵活地定义。例如,可以按月、周、日或小时等时间单位进行调度,并支持任意的时间序列模式。

下面是另一个示例,用于演示如何在MySQL中定期备份数据库:

CREATE EVENT backup
ON SCHEDULE EVERY 1 DAY STARTS '2021-01-01 01:00:00'
DO
  BEGIN
    DECLARE dbname CHAR(64);
    DECLARE bckpsql TEXT;
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur CURSOR FOR SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema','mysql');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
      FETCH cur INTO dbname;
      IF done THEN
        LEAVE read_loop;
      END IF;

      SET bckpsql = CONCAT('mysqldump -u root -p123456 --databases ', dbname, ' > /data/dbbackup/', dbname, '-', DATE_FORMAT(NOW(), '%Y%m%d'), '.sql');
      PREPARE stmt FROM bckpsql;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
    END LOOP;

    CLOSE cur;
  END;

这段代码中,事件名称为backup,事件任务为备份数据库。事件将在每天早上1点开始执行,并且仅备份非系统数据库。

如何执行或停止事件?

要启动或停止一个事件,可以使用ALTER EVENT语句,例如:

-- 启动事件myevent
ALTER EVENT myevent ON;

-- 停止事件myevent
ALTER EVENT myevent OFF;

注意:在执行此操作之前,您必须具有ALTER权限。

如何查看事件?

可以使用SHOW EVENTS命令查看当前需要的事件,例如:

SHOW EVENTS;

总结

MySQL事件调度器是数据库管理中非常实用的一个功能,能够帮助我们自动定期执行一些任务。在使用时,我们需要清楚地理解事件的定义、执行和停止等细节。

以上就是本文的完整攻略。希望对大家有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:老生常谈mysql event事件调度器(必看篇) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • php日期转时间戳,指定日期转换成时间戳

    要将日期转换为时间戳,可以使用PHP中的strtotime()函数。 该函数将日期时间字符串转换为指定格式的Unix时间戳。以下是使用该函数将日期转换为时间戳的步骤: 步骤一:使用strtotime()函数将指定日期时间字符串转换为Unix时间戳。 步骤二:在获取到时间戳后,存储该值,以备以后使用。 下面我们分别来演示一下两个案例。 案例一:将当前日期时间转…

    database 2023年5月22日
    00
  • Centos下Mysql安装图文教程

    下面是详细讲解“Centos下Mysql安装图文教程”的完整攻略。 安装环境 系统版本:Centos 7.0(64位) 安装Mysql 更新Yum源 bashyum update 安装Mysql bashyum install mysql-server 配置Mysql 启动Mysql服务 bashsystemctl start mysqld 设置Mysql开…

    database 2023年5月22日
    00
  • MySQL索引的基本语法

    MySQL索引是提高MySQL查询性能的重要手段,本文将带您了解MySQL索引的基本语法,包括创建、添加和删除索引,以及查看和优化索引等相关操作。 1. 创建索引 在MySQL中,可以通过 CREATE INDEX 创建索引,语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON table_na…

    database 2023年5月22日
    00
  • Go语言提升开发效率的语法糖技巧分享

    下面是针对“Go语言提升开发效率的语法糖技巧分享”的完整攻略: Go语言提升开发效率的语法糖技巧分享 一、介绍 Go语言作为一门开发效率高,运行速度快的编程语言,其语法简洁、易于理解,同时支持并发编程,因此备受程序员们的喜爱。在使用Go语言进行开发时,我们可以通过一些语法糖技巧来提高开发效率。本文将会介绍一些常用的技巧,并结合示例进行讲解。 二、技巧分享 1…

    database 2023年5月22日
    00
  • Mysql中key 、primary key 、unique key 与index区别

    key 是数据库的物理结构,它包含两层意义和作用, 一是约束(偏重于约束和规范数据库的结构完整性), 二是索引(辅助查询用的)。   https://www.cnblogs.com/zjfjava/p/6922494.html   CREATE TABLE `act_ru_execution` ( `ID_` varchar(64) COLLATE utf8…

    MySQL 2023年4月16日
    00
  • mysql timestamp比较查询遇到的坑及解决

    MySQL Timestamp比较查询遇到的坑及解决 在MySQL中,Timestamp是表示日期和时间的数据类型,它可以用于存储时间戳,并可以用于表示日期和时间。它使用的格林威治标准时间。在MySQL中,对Timestamp进行查询时可能会遇到一些比较隐晦的问题,下面将针对这些问题进行分析和解决。 关于Timestamp Timestamp列可以在插入记录…

    database 2023年5月22日
    00
  • Java面试通关要点汇总(备战秋招)

    Java面试通关要点汇总(备战秋招)是一篇关于Java面试备战的攻略总结,其中包含了Java面试必备知识点和技巧,可以帮助备战秋招的Java程序员更好地准备面试。该攻略分为以下几个部分: 一、Java基础知识 Java基础知识是Java面试的重中之重,包括Java语言的基本语法、常用类库、集合框架、多线程、IO操作等。针对这些知识点,面试官通常会问到一些基础…

    database 2023年5月22日
    00
  • MySQL自动编号与主键

    1、自动编号(AUTO_INCREMENT),必须与主键组合使用 默认情况下,起始值为1,增量也为1。 2、主键(PRIMARY KEY) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL 3、AUTO_INCREMENT必须与主键一起使用,主键不一定必须与AUTO_INCREMENT一起使用。 mysql> CREATE …

    MySQL 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部