mysql event 日志_Mysql Event 并记录任务执行日志

目前的mysql版本没有Event执行历史信息,为方便查看Event是否正常执行以及执行结果,可以通过以下两个步骤来实现:

一.创建作业执行Event历史记录表

CREATE TABLE `mysql`.`t_event_history` (

`dbname` VARCHAR(128) NOT NULL DEFAULT '',

`eventname` VARCHAR(128) NOT NULL DEFAULT '',

`starttime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',

`endtime` DATETIME DEFAULT NULL,

`issuccess` INT(11) DEFAULT NULL,

`duration` INT(11) DEFAULT NULL,

`errormessage` VARCHAR(512) DEFAULT NULL,

`randno` INT(11) DEFAULT NULL,

PRIMARY KEY (`dbname`,`eventname`,`starttime`),

KEY `ix_endtime` (`endtime`),

KEY `ix_starttime_randno` (`starttime`,`randno`)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

二.根据以下建模板创建作业

math?formula=%5Ccolor%7Bred%7D%7B%E8%AF%B7%E6%B3%A8%E6%84%8F%E6%A0%B9%E6%8D%AE%E5%AE%9E%E9%99%85%E6%83%85%E5%86%B5%E4%BF%AE%E6%94%B9%E7%9B%B8%E5%85%B3%E4%BF%A1%E6%81%AF%7D

DELIMITER $$

CREATE DEFINER=`root`@`localhost` EVENT `e_test` ON SCHEDULE

#修改以下调度信息

EVERY 1 DAY STARTS '2014-01-03 01:00:00' ON COMPLETION PRESERVE ENABLE DO

BEGIN

DECLARE r_code CHAR(5) DEFAULT '00000';

DECLARE r_msg TEXT;

DECLARE v_error INTEGER;

DECLARE v_starttime DATETIME DEFAULT NOW();

DECLARE v_randno INTEGER DEFAULT FLOOR(RAND()*100001);

INSERT INTO mysql.t_event_history (dbname,eventname,starttime,randno)

#修改下面的作业名(该作业的名称)

VALUES(DATABASE(),'e_test', v_starttime,v_randno);

BEGIN

#异常处理段

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION

BEGIN

SET v_error = 1;

GET DIAGNOSTICS CONDITION 1 r_code = RETURNED_SQLSTATE , r_msg = MESSAGE_TEXT;

END;

#此处为实际调用的用户程序过程

CALL test.usp_test1();

END;

UPDATE mysql.t_event_history SET endtime=NOW(),issuccess=ISNULL(v_error),duration=TIMESTAMPDIFF(SECOND,starttime,NOW()), errormessage=CONCAT('error=',r_code,', message=',r_msg),randno=NULL WHERE starttime=v_starttime AND randno=v_randno;

END$$

DELIMITER ;

通过查询mysql.t_event_history表,我们就知道event何时执行,执行是否成功,执行时长,出错时的错误信息,为管理我们日常调度计划提供很大方便。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值