mysql 计划任务日志_MySQL Event计划任务刷慢日志

本文介绍了如何使用MySQL的Event计划任务来模拟慢查询日志,以便在测试环境中生成日志供graylog收集分析。通过设置慢查询日志、启用Event Scheduler,创建每秒执行一次的EVENT,利用SLEEP函数来产生慢查询,然后展示如何查看、启用和禁用以及删除这些EVENT。这种方法相比于Linux crontab更节省资源。
摘要由CSDN通过智能技术生成

前言

最近在尝试一个日志系统graylog来收集mysql的慢查询日志提,供后续的分析、监控和报警等。测试步骤已经到日志已成功收集到graylog,测试时需要刷一些慢查询日志出来。为了刷比较多的日志和不对测试环境造成较大的影响,想到了使用mysql的sleep函数结合event来做刷慢日志。

MySQL的计划任务是通过event来完成的。相当于SQL Server 的Job。下面是实现过程:

打开mysql的慢日志

set global slow_query_log = 1;

set global long_query_time = 1;

也可以在配置文件议开启慢日志(建议开启)

创建event

启用event事件功能。

set global event_scheduler = 1;

创建event,每1秒执行一次。

delimiter $$

create or replace EVENT event_flush_slow_log

ON SCHEDULE

EVERY 1 SECOND

on completion preserve ENABLE

do

begin

SELECT SLEEP(1);

end; $$

delimiter ;

查询event

show events where Name like '%event_flush_slow_log%'\G;

select * from information_schema.events where event_name='event_flush_slow_log'\G;

开启这个event

ALTER EVENT event_flush_slow_log ENABLE;

可以看到慢日志一直在写入了。

# Time: 180126 12:19:57

# User@Host: root[root] @ localhost [localhost]

# Thread_id: 1640 Schema: db1 QC_hit: No

# Query_time: 1.000645 Lock_time: 0.000269 Rows_sent: 1 Rows_examined: 0

# Rows_affected: 0

SET timestamp=1516940397;

SELECT SLEEP(1);

# Time: 180126 12:19:58

# User@Host: root[root] @ localhost [localhost]

# Thread_id: 1641 Schema: db1 QC_hit: No

# Query_time: 1.000575 Lock_time: 0.000203 Rows_sent: 1 Rows_examined: 0

# Rows_affected: 0

SET timestamp=1516940398;

SELECT SLEEP(1);

# Time: 180126 12:19:59

# User@Host: root[root] @ localhost [localhost]

# Thread_id: 1642 Schema: db1 QC_hit: No

# Query_time: 1.000856 Lock_time: 0.000180 Rows_sent: 1 Rows_examined: 0

# Rows_affected: 0

SET timestamp=1516940399;

SELECT SLEEP(1);

完成后,关闭event

ALTER EVENT event_flush_slow_log DISABLE;

假如不需要这个event,可以删除

DROP EVENT IF EXISTS event_flush_slow_log;

关于sleep函数和event的详细用法,请参考相关文档,这里不再展开。

定时刷慢日志也可以使用Linux crontab调用脚本来做,但每1秒都要登录一次MySQL来执行一次慢查询,消耗资源较大,不建议这样做吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值