MySQL Event计划任务刷慢日志
2018-01-26 13:59
381 查看
前言
最近在尝试一个日志系统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来执行一次慢查询,消耗资源较大,不建议这样做吧。
相关文章推荐
- MySQL CREATE EVENT创建任务计划 定时执行任务(转)
- mysql 5.1以后支持任务计划event_schedule
- MySQL CREATE EVENT创建任务计划定时执行任务
- MySQL event 计划任务示例
- MySQL CREATE EVENT创建任务计划 定时执行任务
- MySQL 事件(event)计划任务
- mysql计划任务实例(event)
- MySQL 事件(event)计划任务入门
- (转)用mysql的存储过程和event来做计划任务
- mysql计划任务
- 使用MySQL计划任务
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- Squid代理服务器+ACL访问控制+Squid日志分析&&任务计划
- [windows的计划任务][转贴]让php定时运行备份mysql!
- Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割
- mysql计划任务
- MySQL定时执行脚本(计划任务)命令实例
- Mysql任务调度(Event)
- 【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件
- mysql 数据库Event定时任务使用详解(Navicat 及直接SQL语句创建)