MySQL玩转定时器

Posted PHP急先锋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL玩转定时器相关的知识,希望对你有一定的参考价值。

1、前置条件,你需要将服务器和mysql的时间都设置成东八区,php.ini和my.cnf配置(参考上篇文章)

2、进入mysql客户端,推荐Navicat for mysql

3、首先查看是否开启了定时器的功能:

####调试MYSQL定时器 --时间设置正确情况下执行下面没影响 xzz1128 #####
set time_zone = \'+8:00\';
SHOW VARIABLES LIKE \'event_scheduler\';##查看是否开启了event定时器功能
set GLOBAL event_scheduler = 1; //开启
select NOW();

4、提醒:虽然这里用set global event_scheduler = on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.cnf配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

5、首先、新建user表:

复制代码
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  `address` varchar(500) NOT NULL,
  `addtime` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码

然后、新建事件,有两种事件类型,一个是间隔触发,另一个是特定事件触发。

6、下面代码中分别介绍了定时器执行持续性动作(每个时间点需要干的)一次性动作(只用一次,用完即甩)

 

#################  mysql持续性定时器 -xzz 1128 ##########################
DROP EVENT IF EXISTS `event_minute`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS \'2017-11-28 15:26:00\' 
ON COMPLETION PRESERVE #当这个事件不会再发生的时候不会被Drop掉
ENABLE DO 

BEGIN
    INSERT INTO `user`(name, address,addtime) VALUES(\'test1\',\'test1\',now());
    INSERT INTO `user`(name, address,addtime) VALUES(\'test2\',\'test2\',now());
END
;;
DELIMITER ;
##################mysql一次性定时器#################################
DROP EVENT IF EXISTS `event_at`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT \'2017-11-28 15:39:00\' 
ON COMPLETION NOT PRESERVE #当这个事件不会再发生的时候会被Drop掉
ENABLE DO 

BEGIN
    INSERT INTO `user`(name, address,addtime) VALUES(\'AT\',\'AT\',now());
END
;;
DELIMITER ;

 

7、其他比较重要的操作语句

###关闭\\打开定时器
ALTER EVENT event_minute DISABLE; 
ALTER EVENT event_minute ENABLE;
###查询定时器状态
select * from mysql.event ;

 

8、看看效果:

8、感谢:

@Author      风一样的码农
@HomePageUrl http://www.cnblogs.com/chenpi/ 

 

以上是关于MySQL玩转定时器的主要内容,如果未能解决你的问题,请参考以下文章

十分钟玩转Mysql的binlog,小白也可以实现增量备份数据

玩转华为ENSP模拟器系列 | 配置LDP远端会话的定时器

玩转华为ENSP模拟器系列 | 配置LDP本地会话的定时器

玩转Bash变量

玩转SpringBoot之定时任务详解

《零死角玩转STM32》-18-SysTick系统滴答定时器