MySQL Event历史记录

MySQL Event历史记录需求 SQL Server的作业历史(Job)记录是保存在msdb库中的,很方便就查询相关的Job定义,计划和历史记录,而MySQL的event却没有历史记录。为方便查看event是否正常执行以及执行

需求
SQL Server的作业历史(Job)记录是保存在msdb库中的,很方便就查询相关的Job定义,计划和历史记录,而MySQL的event却没有历史记录。为方便查看event是否正常执行以及执行结果,通过以下两个步骤来实现类似的功能。
 
实现
1. 在mysql库创建event执行的历史记录表
CREATE TABLE `mysql`.`udf_event_history` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`event_gid` varchar(36) NOT NULL,
`db_name` varchar(128) NOT NULL DEFAULT "",
`event_name` varchar(128) NOT NULL DEFAULT "",
`start_time` datetime(3) NOT NULL DEFAULT current_timestamp(),
`end_time` datetime(3) DEFAULT NULL,
`is_success` tinyint(4) DEFAULT 0,
`duration` decimal(15,3) DEFAULT NULL,
`error_msg` varchar(512) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_event_git` (`event_gid`),
KEY `idx_db_event_name` (`db_name`,`event_name`),
KEY `idx_s_e_time` (`start_time`,`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

代码100分

 

2.根据以下建模板创建event

请注意根据实际情况修改相关信息
代码100分USE db1;

DELIMITER $$

CREATE DEFINER=`root`@`localhost` EVENT `event_test1` 
ON SCHEDULE EVERY 1 MINUTE STARTS "2019-01-01 00:00:00" 
ON COMPLETION PRESERVE ENABLE DO 
BEGIN  
    DECLARE r_code CHAR(5) DEFAULT "00000";  
    DECLARE r_msg TEXT;  
    DECLARE v_error INT;  
    DECLARE v_start_time DATETIME(3) DEFAULT NOW(3);
    DECLARE v_event_gid VARCHAR(36) DEFAULT UPPER(REPLACE(UUID(),"-",""));  
    
    /*修改为实际的event名*/
    INSERT INTO mysql.udf_event_history (db_name, event_name, start_time, event_gid)  
    VALUES(DATABASE(), "event_test1", v_start_time, v_event_gid);    
      
    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 db1.usp_1();
    END;  
      
    UPDATE mysql.udf_event_history 
    SET end_time = NOW(3), is_success = ISNULL(v_error), duration = TIMESTAMPDIFF(microsecond,start_time, NOW(3)) / 1000000, 
    error_msg = CONCAT("error = ", r_code,", message = ", r_msg)
    WHERE event_gid = v_event_gid;  
      
END$$  
DELIMITER ; 

 

通过查询mysql.udf_event_history表,可以知道event的开始结束时间、是否成功、执行时长、错误信息,等,为管理日常调度计划提供方便。

root@localhost [db1]select * from mysql.udf_event_history limit 2G;
*************************** 1. row ***************************
        id: 1
   db_name: db1
event_name: event_test1
start_time: 2019-12-03 15:44:00.000
  end_time: 2019-12-03 15:44:00.001
is_success: 0
  duration: 0.001
 error_msg: error = 42000, message = PROCEDURE db1.usp_2 does not exist
 event_gid: AB305D8C15A011EAB822005056AB041E
*************************** 2. row ***************************
        id: 2
   db_name: db1
event_name: event_test2
start_time: 2019-12-03 15:46:00.000
  end_time: 2019-12-03 15:46:05.405
is_success: 1
  duration: 5.405
 error_msg: NULL
 event_gid: F2B6197C15A011EAB822005056AB041E

 

参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10632.html

(0)
上一篇 2022-12-24
下一篇 2022-12-24

相关推荐

  • 平板电脑什么牌子好?看完这组图片更爱他了「建议收藏」

    平板电脑什么牌子好?看完这组图片更爱他了「建议收藏」     最近喜欢刷抖音,关注了一堆手绘博主。以前画手绘,好多人都是用手绘板然后连接电脑上画,手绘板好一点的价格很多,差一点的延迟度没那么好。现在科技这么发达,好多博主都用平板来开始手绘了。不过平板…

    2023-03-13
    145
  • Python函数参数的使用方法

    Python函数参数的使用方法位置参数是我们最常见的参数类型。当我们定义函数时,可以通过赋值来定义函数的参数,这就是位置参数。当我们调用函数时,需要按照定义顺序传递参数,即传递给函数的第一个参数会给第一个位置参数,第二个参数会给第二个位置参数,以此类推。

    2024-03-23
    82
  • MySQL之外键、表关系及SQL查询关键字[通俗易懂]

    MySQL之外键、表关系及SQL查询关键字[通俗易懂]一、外键 假设现在我们有一张员工信息表,表的字段如下: id # 主键 name # 姓名 age # 年龄 dep_name # 部门名称 dep_desc # 部门描述 单从数据存储上来看,这个表

    2023-05-06
    141
  • Python绘图:线的绘制方法

    Python绘图:线的绘制方法绘图作为数据可视化中一个重要的方面,不仅能够让数据更加直观清晰地呈现出来,还能够帮助人们更好地理解数据背后的含义。而在绘图中,线的绘制方法是其中一个重要的方面。Python作为一种广泛使用的编程语言,在数据可视化方面有着越来越多的应用。Python提供了丰富的绘图模块,使得我们能够方便地使用Python进行线形图、折线图、箱线图等各种类型的图形绘制。本文将重点介绍Python中绘制线形图的相关方法,以及针对不同的数据类型,如何使用Python绘制出不同类型的线形图。

    2024-08-14
    35
  • 提高工作效率的Python工具库

    提高工作效率的Python工具库数据处理是Python的一个强项,对于数据分析和处理,Python提供了许多好用的工具库。例如,Pandas库可以帮助我们方便地读取数据、进行数据清洗、转换和分析等。此外,Python还可以通过其他库来进行数据自动化处理,例如:

    2024-03-15
    79
  • 数据库 dcl_数据库dcl是什么意思

    数据库 dcl_数据库dcl是什么意思DCL(Data Control Language) 我们现在默认使用的都是 root 用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,…

    2023-03-14
    139
  • dpsir框架_AI少女框架

    dpsir框架_AI少女框架DB4AI这个方向中,数据库通过集成AI能力,在用户进行AI计算时就可以避免数据搬运的问题。不同于其他的DB4AI框架,本次openGauss开源的原生框架是通过添加AI算子的方式完成数据库中的AI计

    2023-06-17
    134
  • 京东张政:内容理解在广告场景下的实践和探索[通俗易懂]

    京东张政:内容理解在广告场景下的实践和探索[通俗易懂]分享嘉宾:张政 京东 算法工程师 编辑整理:AMS 周金星 出品平台:DataFunTalk 导读: 内容生态建设是近几年互联网快速发展的关键动因,也是AI化的重点方向之一。本文主要分享在京东广告业务

    2023-05-23
    140

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注