MySQL 8.0 定时任务(事件)验证

2021-11-15 17:03:41 浏览数 (1)

1、启动事件机制

代码语言:javascript复制
mysql> SHOW VARIABLES LIKE 'event_scheduler';
 ----------------- ------- 
| Variable_name   | Value |
 ----------------- ------- 
| event_scheduler | ON    |
 ----------------- ------- 
1 row in set (0.00 sec)

mysql> 

MySQL 8.0事件机制是默认开启的。

2、准备一张数据表

代码语言:javascript复制
mysql> create table test(
    ->   id int auto_increment primary key,
    ->   name char(10),
    ->   dt datetime default CURRENT_TIMESTAMP,
    ->   ctime timestamp
    -> );
Query OK, 0 rows affected (0.01 sec)

3、创建事件

代码语言:javascript复制
-- 创建事件,指定事件名
CREATE EVENT IF NOT EXISTS event_demo
-- 每天凌晨1点执行
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
-- 永久执行
ON COMPLETION PRESERVE
-- 事件说明
COMMENT 'T 1的定时任务'
-- 指定事件启动时所要执行的代码
DO 
BEGIN
	insert into employees.test(name) values('test');
END
代码语言:javascript复制
mysql> show events G
*************************** 1. row ***************************
                  Db: employees
                Name: event_demo
             Definer: dbadmin@%
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: DAY
              Starts: 2021-11-12 01:00:00
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
  Database Collation: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

mysql> 

3、查询执行结果

两天后,查看定时任务执行结果

代码语言:javascript复制
mysql> select * from test;
 ---- ------ --------------------- ------- 
| id | name | dt                  | ctime |
 ---- ------ --------------------- ------- 
|  1 | test | 2021-11-11 17:41:16 | NULL  |
|  2 | test | 2021-11-12 01:00:00 | NULL  |
|  3 | test | 2021-11-13 01:00:00 | NULL  |
 ---- ------ --------------------- ------- 
3 rows in set (0.00 sec)

mysql> exit
Bye
[root@node1 ~]# date
2021年 11月 13日 星期六 21:33:53 EST
[root@node1 ~]# 

0 人点赞