1 选择常规查询日志和慢查询日志输出目标

1.1  log_output查看、定义

  所谓的输出目标就是日志写入到哪里,mysql中用系统变量 log_output来指定输出目标,log_output的值有三个:

NONE   FILE   TABLE  (其中NONE优先级最高)

  mysql中log_output语法 :

  show variables like "log_output"     查看log_output

  set global log_output='FILE'            设置log_output

  如果log_output在日志启动的时候没有指定,则默认日志记录目标是FILE,如果log_output在日志启动的时候已经指定那么他的只可以是  TABLE 或  FILE 或 NONE ,也可以是他们的组合(多个值之间用,分隔),如果开启了任何一个日志,服务器会打开相应的日志文件并向其写入启动消息,但是必须选择log_output,否则日志就不会进一步的写入日志文件中

  –log-output=TABLE,FILE,NONE NONE表示不记录到文件或者表中。如果NONE出现,则其他的输出目标也无效。
  –log-output=TABLE,FILE 同时输出到文件或表中  
  –log-output 则输出到默认的文件中

1.2日志表的好处和特征

日志表的好处:

  1. 每条日志具有标准的格式,要显示日志表的当前结果,请使用一下语句

    SHOW  CREATE  TABLE  mysql.general_log;    常规查询日志

    SHOW  CREATE  TABLE mysql.slow_log;           慢查询日志

  2. 可以通过语句访问日志,可以很容易获取满足特定条件的日志查询,例如获取特定时间段或某一个用户的日志

  3. 日志的内容可以通过客户端远程连接进行查询。

日志表的具体实现特征:

  1. 日志表可以进行CREATE TABLE, ALTER TABLE,和DROP TABLED操作,但是对于日志表ALTER TABLE和DROP TABLE不能用,必须禁用,

  2. 默认情况下,日志表使用CVS存储引擎将日志数据写到逗号分割的数据格式中国,这种格式更容易被导入到其他程序中进行分析使用

  3. 可以更改日志表以使用 MyISAM存储引擎,但不能在日志使用的时候用LATER TABLE修改日志表,必须要先禁止日志,而且日志表的存储引擎只能用CVS或MyISAM, 禁用日志并修改存储引擎:

    SET @old_log_state = @@GLOBAL.general_log;

    SET GLOBAL general_log = 0;

    ALTER TABLE mysql.general_log ENGINE = MyISAM;

    SET NGLBAL general_log = @old_log_state;

    (注:上面示例使用通用查询日志; 慢查询日志的过程类似)

  4 TRUNCATE TABLE是对日志表的有效操作。它可用于使日志条目到期(清空日志)

  5. 可以通过RENAME_TABLE重命名日志表的表名(例如,执行日志轮换) :

    DROP TABLE IF EXISTS general_log2;

    CREATE TABLE generla_log2 LIKE general_log;

    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;

  6. CHECK TABLE  是对日志表有效的操作

    检查InnoDB和MyIsam是否有错误。检查表或者视图是否存在错误,对 MyISAM 和 InnoDB 存储引擎的表有作用。对于 MyISAM 存储引擎的表进行表检查,也会同时更新关键字统计数据。语法:

    CHECK TABLE tbl_name [, tbl_name]  [option]

  7. LOCK TABLES 不能再日志表上使用,同时  INSERT  DELETE  UPDATE 不能再日志表上使用,这些操作仅允许在服务器本身内部执行

  8 FLUSH TABLES WITH READ LOCK 并且read_only系统变量的状态 对日志表没有影响。服务器始终可以写入日志表。

  9 写入日志表的条目不会写入二进制日志,因此不会复制到从属服务器

  10 要刷新日志表或日志文件,请分别使用 FLUSH TABLES或 FLUSH LOGS

  11 不允许对日志表进行分区。

  12 一个mysqldump的转储包括报表中重新创建这些表,以便它们不会重新加载转储文件后失踪。不转储日志表内容

2  慢查询日志   slow_query_log

  慢查询日志由long_queyr_time执行时间超过几秒钟的SQL语句组成,并且要求至少检查min_examined_row_limit行。慢速查询日志可用于查找执行时间较长的查询,因此是优化的候选查询

  2.1 慢查询日志的参数

    slow_query_log  = 0|1    禁用|启用慢查询日志, 可在运行时启用或禁用 日志

    slow_query_log_file       指定慢查询日志记录文件 ,如果这里没有指定慢查询日志文件默认为 host_name_slow.log, 同时可在运行是改变日志文件,如果日志文件已打开,则会关闭该文件打开新文件

    long_query_time            如果查询花费时间超过此秒数,会将此查询记录到慢查询日志中    默认10,最小值0     该值可以指定为微秒的分辨率:

    log-short-format  = {OFF|ON}   默认值  OFF  如果已激活,则将较少的信息记录到慢查询日志中

    log_slow_admin_statements    启用此系统变量会在慢查询日志中记录管理语句,其中包括:ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP TABLE, OPTIMIZE TABLE, 和 REPATR TABLE.

    log_queries_not_using_indexes ={0|1}  要在写入慢查询日志的语句中包含不使用索引进行行查找的查询

    log_throttle_queries_not_using_indexes  系统变量限制可以写入慢查询日志的每分钟此类查询的数量,   值 0 (默认值) 标识“无限制”。正值会对不使用索引的查询的日志记录市价每分钟限制。

  2.2 服务器判断是否记录慢查询日志的顺序:

    1.  查询必须不是管理语句,如果想记录管理语句,开启log_slow_admin_statements

    2. 查询必须花费long_query_time秒钟,如果想记录不使用行索引的查询,开启log_queries_not_using_indexes

    3 查询必须至少检查过min_examined_row_limit行

    4 不得根据log_throttle_queries_not_using_indexes 设置禁止查询 。

mysql--日志文件的更多相关文章

  1. lnmp vps服务器删除mysql日志文件三种方法

    我在上一篇文章介绍了著名的LNMP主机一键安装工具,对比了军哥lnmp和AMH主机的差别,由于AMH拥有用户后台界面,易于新手操作,值得推荐. 但是,上周末我网站宕机,收到DNSPOD发来了宕机提醒, ...

  2. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  3. Linux下自动清除MySQL日志文件

    MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...

  4. 浅谈MySQL日志文件|手撕MySQL|对线面试官

    关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 上周五面试了字节的第三面,深感数据库知识的重要,我也意识到在平时的学习中,自己对于数据库的学习较为薄弱.甚至在有过一定实习经验之后,依旧因为 ...

  5. mysql 日志文件mysql-bin文件清除方法,和mysql-bin相关文件的配置

    默认情况下mysql会一直保留mysql-bin文件,这样到一定时候,磁盘可能会被撑满,这时候是否可以删除这些文件呢,是否可以安全删除,是个问题. 首先要说明一下,这些文件都是mysql的日志文件,如 ...

  6. mysql日志文件

    mysql的数据文件夹里出现mysql-bin日志文件,通过my.cnf注释掉log后,是否可以删除了? 参考 http://database.51cto.com/art/201107/278988. ...

  7. mysql日志文件相关的配置【2】

    1.二进制日志是什么? mysql 的二进制日志用于记录数据库上做的变更. 2.二进制日志什么时间写到磁盘 1.总的来说二进制日志会在释放锁之前就写入磁盘.也就是说在commit完成之前:client ...

  8. mysql日志文件相关的配置【1】

    1.log_output=[file | table | none ] 这个参数指定general_log &slow_query_log 的输出目标.可以是table | file | no ...

  9. MYSQL 日志文件路径错误 1067错误

    场景再现: ---------------------------------------------------------------------------------------------- ...

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

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

随机推荐

  1. Codeforces Round #605 (Div. 3) 题解

    Three Friends Snow Walking Robot Yet Another Broken Keyboard Remove One Element Nearest Opposite Par ...

  2. CF1175D Array Splitting

    题目链接 题意 给出一个长度为\(n\)的序列\(a\),要求分为恰好\(K\)段.第\(i\)个点的贡献是\(a_i \times f(i)\),\(f(x)\)表示x所属的是第几段. 思路 非常巧 ...

  3. [LeetCode] 890. Find and Replace Pattern 查找和替换模式

    You have a list of words and a pattern, and you want to know which words in words matches the patter ...

  4. Linux 使用squid3搭建代理服务器

    在对接微信/支付宝等3方业务时,往往都有ip白名单的设置,由于内网往往都是动态ip,频繁配置白名单是件及其繁琐的事情. 使用代理转发就是最方便的做法. 下面就使用squid3配置一台代理服务器. sq ...

  5. python脚本生成exe程序

    去年十一月换了新公司后,一直没闲着,马不停蹄地接不同的需求,一个版本一个版本的迭代,也没时间研究python了.十一休假归来,某日,老婆问金融量化需要学python吗?并分享了一个公众号文章,内容是吹 ...

  6. SpringBoot集成Spring Security(6)——登录管理

    文章目录 一.自定义认证成功.失败处理 1.1 CustomAuthenticationSuccessHandler 1.2 CustomAuthenticationFailureHandler 1. ...

  7. Kubernetes 学习(十)Kubernetes 容器持久化存储

    0. 前言 最近在学习张磊老师的 深入剖析Kubernetes 系列课程,最近学到了 Kubernetes 容器持久化存储部分 现对这一部分的相关学习和体会做一下整理,内容参考 深入剖析Kuberne ...

  8. 第19课 lambda vs std::bind

    一. std::bind (一)std::bind实现的关键技术 [编程实验]探索bind原理,实现自己的bind函数 #include <iostream> #include <t ...

  9. presto整合hive

    Presto安装   前提条件: hadoop安装好了(并启动了) + hive安装好了        文档网址:http://prestodb.jd.com/docs/current/install ...

  10. Redis 内存管理 源码分析

    要想了解redis底层的内存管理是如何进行的,直接看源码绝对是一个很好的选择 下面是我添加了详细注释的源码,需要注意的是,为了便于源码分析,我把redis为了弥补平台差异的那部分代码删了,只需要知道有 ...