MySQL Event计划任务刷慢日志
前言
最近在尝试一个日志系统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 Event计划任务刷慢日志的更多相关文章
- 【Mysql】MySQL event 计划任务
一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...
- 详解 MySQL 的计划任务
注意:5.1以后才支持! 让MYSQL定期执行指定的一条命令.功能类似于crontab. 1. 检查你的MYSQL是否开了这个功能 SHOW VARIABLES LIKE 'event_schedul ...
- MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析
关于如何理解MySQL执行计划中Extra列的Using where.Using Index.Using index condition,Using index,Using where这四者的区别 ...
- mysql event 学习
mysql 通过事件可以实现定时任务 : 1. 检查你的MYSQL是否开了这个功能 show variables like "%scheduler" //注意 最后是er 2. ...
- mysql 事件计划
一.开启mysql事件计划 首先在sql中查询计划事件的状态:SHOW VARIABLES LIKE 'event_scheduler'如果返回的是off表示当前是关闭状态,如果是on当前已经开启了计 ...
- MySQL 表数据多久刷一次盘?
前言 事情是这样的,在某乎的邀请回答中看到了这个问题: - 然后当时我没多想就啪一下写下来这样的答案: 这个其实要通过 MySQL 后台线程来刷的,在 Buffer Pool 中被修改的过的 Page ...
- Mysql慢查询和慢查询日志分析
Mysql慢查询和慢查询日志分析 众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的.下面总结一些使用过或者研究过的经验,从配置以 ...
- MySQL:动态开启慢查询日志(Slow Query Log)
前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 ...
- MySQL执行计划解读
Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得 ...
随机推荐
- EBS安装完成后,对数据库相关配置的改动
EBS安装完成后,对数据库相关配置的改动 1.转为ASM,数据文件,控制文件,redo log,archived log从文件系统转移至ASM 2.禁用resource manager 由于发现系统的 ...
- SQLite使用EF6的连接配置
在配置文件中配置连接字符串 1. 使用nuget安装SQLite Install-Package System.Data.SQLite 安装好后的依赖项有: System.Data.SQLite.dl ...
- MVC无限级分类01,分层架构,引入缓存,完成领域模型与视图模型的映射
本系列将使用zTree来创建.编辑关于品牌.车系.车型的无限级分类,使用datagrid显示,源码在github.先上最终效果: datagrid显示所有记录.分页,提供添加.修改.删除按钮,并提供简 ...
- java string常见操作题
1. 每个基本类型封装类都有将string转换为基本数据类型的方法 对于非常大的数字请使用Long,代码如下 int age = Integer.parseInt("10"); ...
- C#Arcengine通过坐标点生成面(环形)
来自:http://www.cnblogs.com/lee24789229/p/5481978.html 通过传入坐标点,返回几何图形,此代码部分可以生成环形面. 方法一 private IGeome ...
- Extjs文件选择器
Ext.hoo.component.FileBrowserComponent.js /** * Ext.hoo.component.FileBrowserWindow 系统文件浏览选择组件,可以选定电 ...
- 如何下载android源码与android内核源码
首先,要分清楚,android的源代码和android的内核代码一般是分开的,要分别进行下载. 1.先下载android的源代码.(这里不包括android的内核代码) 下载最新的源代码,一 ...
- Eclipse 报 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”错误的解决办法
1.打开Eclipse软件,选择菜单栏run,在二级菜单中选择 Debug Configurations... 项,如下图所示. 2.在弹出的窗口中选择 (x)=Arguments 选项卡,VM a ...
- Android读取Excel文件
转:http://bigcat.easymorse.com/?p=1648 java可以读取Excel文件,android同样也行,效果如下: excel源文件: 读取日志如下: 首先需要引入jxl. ...
- 使用StringBuilder或StringBuffer简单优化
使用StringBuilder或StringBuffer // join(["a", "b", "c"]) -> "a an ...