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何时执行,执行是否成功,执行时长,出错时的错误信息,为管理我们日常调度计划提供很大方便。

 

posted @   zping  阅读(994)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示