MYSQL 事件操作步骤记录

主要记录mysql事件的创建过程,启用,删除,查看等语句

  1. 以82服务器waf_data_copy1表为例,创建存储过程,以该表的time(datetime)字段进行删除,删除60天前的数据
use cloud;
DROP PROCEDURE IF EXISTS pro_clean_data;
CREATE PROCEDURE pro_clean_data()
    BEGIN
      DELETE FROM WAF_data_copy1 WHERE DATE(TIME) <= DATE(DATE_SUB(NOW(),INTERVAL 60 DAY));
    END 

其中TIME为要进行判断的时间依据。
​ 此处为删除60天以前的数据,若需要删除几个月以前的数据,(以三个月为例)则为 INTERVAL 3 MONTH。

注意一个问题,是关于mysql中BEGIN和END的坑,这个问题是查询定界符没更改导致的。如果是直接操作后台mysql进行语句编写时, 
你在建立触发器之前,先执行这个语句 DELIMITER $$(这一句把原来默认的查询结尾定界符--分号 改为 $$,然后,你就可以在begin ....end 中
间 的每一句加 分号,最后在end的 后面,以$$ 作结束。 因为新的语句定界符已经是$$ 。
触发器建立后,你可以根据情况,把查询定界符$$ 改为原来的分号 , 使用 delimiter ;

mysql> DELIMITER $$
mysql>  CREATE PROCEDURE pro_clean_data()
    ->     BEGIN
    ->        DELETE FROM WAF_data_copy1 WHERE DATE(TIME) <= DATE(DATE_SUB(NOW(),INTERVAL 60 DAY));
    ->      END$$
Query OK, 0 rows affected (0.05 sec)

mysql> DELIMITER ;
 
  1. 创建事件
CREATE EVENT IF NOT EXISTS event_time_cleaner
ON SCHEDULE EVERY 1 DAY STARTS '2021-10-13 14:16:00'
ON COMPLETION PRESERVE
DO CALL pro_clean_data()
  1. 查看事件是否开启
show VARIABLES like 'event_scheduler';
  1. 启动事件
set global event_scheduler=on;
建议配置文件添加相关参数,确保当数据库重启后,事件依然生效
在my.cnf中的[mysqld]部分添加,
event_scheduler=on
然后重启mysql
  1. 查看创建的事件2种方式
show events;
select * from information_schema.events;
  1. 删除事件
drop event event_time_cleaner;
  1. 通过查询语句查看执行结果,看到
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44157851/article/details/120743368