mysql 事件 日志_Mysql事件监控日志

建立监控表:

CREATE TABLE `t_event_history` (

id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

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

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

`starttime` DATETIME NOT NULL DEFAULT '2000-01-01 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

) ENGINE=INNODB DEFAULT CHARSET=utf8;

根据以下建模板创建作业

#请注意根据实际情况修改相关信息

DELIMITER $$

create DEFINER=`root`@`%` EVENT `Job_Backup_tb_cat` ON SCHEDULE EVERY 1 DAY STARTS '2016-09-07 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN

DECLARE v_starttime DATETIME DEFAULT NOW();

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

DECLARE r_code CHAR(5) DEFAULT '00000';

DECLARE r_msg TEXT;

DECLARE v_error INTEGER;

INSERT INTO `t_event_history` (`starttime`,`issuccess`,randno) VALUES(v_starttime,0,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 Backup_tb_cat();

END;

UPDATE t_event_history SET endtime=NOW(),issuccess=1,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 ;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值