general log&slow query log

对于MySQL的一般查询日志和慢查询日志,开启比较简单,其中公用的一个参数是log_output,log_output控制着慢查询和一般查询日志的输出方向
可以是表(mysql.general_log,mysql.slow_log)或者文件(有参数general_log_file和slow_query_log_file配置决定)
或者同时输出到表和文件(想不明白,什么时候需要同时输出到表和文件)。
但是两者受log_output参数影响,输出的目标总是一致的,也就是要么都写入表,或者要么都写入文件,不会一个输出到表,一个输出到文件。

--slow log 相关参数
select *
from performance_schema.global_variables
where variable_name in
('slow_query_log','log_output','slow_query_log_file','long_query_time') --general log 相关参数
select *
from performance_schema.global_variables
where variable_name in
('general_log','log_output','general_log_file')

对于上述两种日志,系统默认不会清理,因此在开启了相关日志之后,需要人为清理。

如何清理历史general log&slow query log

1,当输出目标为表的时候

  无法直接删除,如果直接删除的话,会出现“ERROR 1556 (HY000): You can't use locks with log tables.”的错误提示

  

以general log为例,需要先关闭general_log,然后重命名general_log这个表,

在对重命名之后的表执行删除,最后在重命名回来,最后开启general_log(如果有必要的话)

SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
DELETE FROM general_log_temp WHERE event_time < DATE(NOW());
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON'; --slow log 同理
SET GLOBAL slow_query_log = 'OFF';
RENAME TABLE slow_log TO slow_log_temp;
DELETE FROM slow_log_temp WHERE start_time < DATE(NOW());
RENAME TABLE slow_log_temp TO slow_log;
SET GLOBAL slow_query_log = 'ON';

  如果对重命名之后的表(general_log或者是slow_log)没有再次重命名回来,会发生什么?
  参加如下截图,如果没有找到对应的表(general_log或者是slow_log),在输出目标为表的情况下,会提示无法找到对应的表,将无法开启对应的日志

2,当输出目标为文件的时候

  当输出目标为文件的时候,在linux下,直接使用rm命名删除即可,如果在开启了一般查询日志或者是慢查询日志,删除对应的日志文件,并不影响数据库的正常使用
  网上有说需要停止MySQL服务然后重命名文件然后在创建新的文件啥的,在Linux下并不是必须的,不知道在windows下是什么情况,没兴趣试。
  当然也不是说就建议始终这种暴力的方式清理日志文件,
  在Linux下,删除了默认的日志文件(或者重命名了原日志文件),要想再次生成日志文件
  1,可以使用mysqladmin flush-logs
  2,是SQL命令flush slow logs;flush general logs;
  3,重启MySQL服务
  均可重新生成对应的日志文件。

注意:当对应的文件是存在的时候,上述命名执行之后是没有影响的(也不会清理对应的日志文件)


以下偏离主题

当输出目标为表的时候的解析

  不管是general_log或者是slow_log,对应的SQL语句都是二进制格式的,需要使用convert(sql_text using UTF8)做一个转换,才变得具有可读性。

当输出目标为表的时候对性能的影响

  据个人测试,在请求量不大的数据库上,开启general_log或者是slow_log,对性能影响并没有非常明显。
  理论家们一方面强调说MySQL的处理并发上多强悍,一方面又说开启general_log对性能影响很大,会不会自相矛盾呢?
  关于general_log,在zabbix监控下,测试环境TPS不过百的情况下(每秒写入general log不超过100条数据),开启general_log之后并CPU负载几乎没有变化,CPU高点是在做其他压力测试。
  尤其是slow_log这种写入不是太频繁的日志,直接写入到表中,对性能的影响有限,比后面再去花时间解析文件……  
  当然不排除TPS在上千或者上万甚至更高之后,开启general_log会产生较大的影响,当然没事也不会闲的蛋疼去开general_log。

  

备注:

直接rm掉general log&slow query log
并没有实际删除文件,磁盘空间也不会释放。mysql进程会继续持有,并且持续往里写数据。lsof看一下就知道了
压力大的情况下 大概30-% 性能损耗

MySQL一般查询日志或者慢查询日志历史数据的清理的更多相关文章

  1. mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)

    一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...

  2. MySQL日志文件之错误日志和慢查询日志详解

    今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...

  3. mysql开启binlog日志和慢查询日志

    1)首先,为什么要开启binlog日志和慢查询日志呢? binlog日志会记录下数据库的所以增删改操作,当不小心删除.清空数据,或数据库系统出错,这时候就可以使用binlog日志来还原数据库,简单来说 ...

  4. mysql 开发进阶篇系列 41 mysql日志之慢查询日志

    一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件 ...

  5. 使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)

    前提MySQL开启了binlog日志操作1. 查看MySQL是否开启binlog(进mysql操作) mysql> show variables like 'log_bin%';       2 ...

  6. MySQL 通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询 ...

  7. 关于MySQL 通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查 ...

  8. MySQL错误日志、binlog日志、查询日志、慢查询日志简介

    1.数据库的日志是帮助数据库管理员,追踪分析数据库曾经发生的各种事件的有力依据,mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决以下问题:各个日志的作 ...

  9. Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍

    前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...

随机推荐

  1. Django学习笔记之验证和授权

    验证和授权概述 Django有一个内置的授权系统.他用来处理用户.分组.权限以及基于cookie的会话系统.Django的授权系统包括验证和授权两个部分.验证是验证这个用户是否是他声称的人(比如用户名 ...

  2. 备份恢复工具xtrabackup安装和使用的记录

    一.安装 下面的方法是在测试环境可以上网的情况下安装的: 提供的是在centos7上安装的方法: 包下载: wget https://www.percona.com/downloads/percona ...

  3. xml和java对象互转:JAXB注解的使用详解

    先看工具类: import org.slf4j.Logger; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; ...

  4. 解决AndroidStudio引入Jar出现Unable to resolve dependency for ':app@debug/compileClasspath

    今天在做Android项目时遇到一个万脸懵逼的错误,表示没看懂,百度一圈说是被墙啥的 不过最终还是被朕给找到了答案,解决办法如下 点击AndroidStudio左上角 File -> setti ...

  5. ubuntu ssh

    客户端 Client端生成公钥和密钥 在Ubuntu服务器上安装ssh 安装方法: apt-get install ssh 安装完成后验证是否SSH安装成功 验证方法: 在命令行模式下执行命令:ssh ...

  6. Struts2单文件上传原理及示例

    一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里 ...

  7. GitLab配置后收取不到邮件问题

    一.root权限下,修改gitlab的配置文件:/etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_ ...

  8. DOM 核心

    继承在DOM中的重要性: 1. Node 对象 2. Element 对象 3. Document 对象

  9. Promise.all处理多个异步请求

    一个前台页面需要请求2个rest接口获取数据,一个用于解析文件获取列名,一个查询数据库获得列值. 有很低的概率页面显示为空,刷新可能就有显示了. 使用Promise.all就解决了上面的问题,2部分数 ...

  10. FuzzScanner 信息收集小工具

    前言: 该工具集成了各种大牛的工具,比如子域名发现,目录扫描,nmap端口扫描,c段地址查询,端口指纹,以及waf查询 00X1: 安装不推荐git安装,首先直接githup脱下来:git clone ...