千家信息网

MySQL数据库中怎么定期删除日志表

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关MySQL数据库中怎么定期删除日志表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 开启事件调度器set global
千家信息网最后更新 2026年10月31日MySQL数据库中怎么定期删除日志表

这篇文章将为大家详细讲解有关MySQL数据库中怎么定期删除日志表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1. 开启事件调度器

set global event_scheduler= ON;             show variables like '%event_scheduler%';#my.cnf增加参数event_scheduler = on

2. 创建日志删除记录表

CREATE TABLE IF NOT EXISTS mq_log( name VARCHAR(400) NOT NULL COMMENT '删除信息', row INT COMMENT '删除行数', del_time TIMESTAMP COMMENT '删除时间') COMMENT = '日志删除记录表';

3. 创建日志删除存储过程

这里主要用了异常记录、影响行数记录、事务处理几个特点

drop procedure if exists del_mq_log;DELIMITER // create procedure del_mq_log()BEGIN    DECLARE  affect_rows INT;       DECLARE  affect_rows2 INT;       DECLARE  affect_rows3 INT;       declare v_commit int default 2; -- 定义事务用,1为正常,-10为失败    declare msg text;-- 记录错误信息    -- 异常的时候msg捕获报错信息    declare continue handler for sqlexception     begin get diagnostics condition 1  msg = message_text;set v_commit = -10; end ;        start transaction;    -- 设置事务    delete from lcp_mq_record where last_update_date < DATE_SUB(CURDATE(),INTERVAL 30 DAY);    select ROW_COUNT() into @affect_rows;    delete from lcp_dd_service_record where last_update_date < DATE_SUB(CURDATE(),INTERVAL 30 DAY);    select ROW_COUNT() into @affect_rows2;    delete from lcp_api_service_record where last_update_date < DATE_SUB(CURDATE(),INTERVAL 30 DAY);    select ROW_COUNT() into @affect_rows3;    insert into mq_log values('删除lcp_mq_record成功',@affect_rows,now()),('删除lcp_dd_service_record成功',@affect_rows2,now()),('删除lcp_api_service_record 成功',@affect_rows3,now()); -- 记录删除情况    -- 异常回滚且记录日志    if v_commit = -10 then           ROLLBACK;        insert into mq_log values(msg,0,now());    end if ;END//DELIMITER ;

4. 创建一个每天凌晨1点执行存储过程的定时任务

DROP event IF EXISTS e_del_mqlog;     CREATE EVENT e_del_mqlog     ON SCHEDULE   EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)  DO call del_mq_log();

5. 第一次删除需做回收

alter table lcp_mq_record engine=innodb;alter table lcp_dd_service_record engine=innodb;alter table lcp_api_service_record engine=innodb;

关于MySQL数据库中怎么定期删除日志表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

日志 成功 事务 信息 数据 数据库 内容 文章 更多 知识 篇文章 记录表 过程 存储 不错 事件 任务 参数 情况 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 湖南永感互联网科技有限公司 为想互联网科技怎么样 中国互联网科技工作委员会毛军 互联网科技集团 银优互联网科技有限公司 苏州互联网科技贷款公司 米客互联网科技 深圳天众互联网科技公司 成都狮子座互联网科技 广州优美互联网科技 顶级互联网科技成果有哪些 科技互联网大厂 智腾互联网科技有限公司 湖南一路畅行互联网科技 互联网科技研发水平 互联网在线教育科技创业 恒生互联网科技业指数调整周期 滨湖区互联网智能科技产品有哪些 数字科技和互联网金融哪个好 江苏根荣互联网科技 互联网科技公司的优势 智能科技公司是互联网公司吗 上海亿帐通互联网科技 湖南洣水互联网科技有限公司扣款 厦门千工互联网科技有限公司 山东有哪些互联网科技公司 东营紫格互联网科技 互联网界的黑科技 杭州融税互联网科技有限公司
0