zoukankan      html  css  js  c++  java
  • 12.Mysql之日志管理(错误日志、慢日志、通用日志)

    1.前言:

      日志对于Mysql的管理是非常重要的一节,常见的Mysql的日志主要包括错误日志(err.log)、慢日志(slow.log)、通用日志(general log)二进制日志(binlog)、redo log日志、undo log日志

    2.Mysql的错误日志

      错误日志文件对Mysql的启动、运行、关闭过程中进行了记录,该日志不仅记录了所有的错误信息,也记录了一些警告信息和正确信息,可以通过如下命令查看错误日志存放的路径 

    mysql> show variables like '%log_err%';
    +---------------------+----------------------+
    | Variable_name       | Value                |
    +---------------------+----------------------+
    | binlog_error_action | ABORT_SERVER         |
    | log_error           | /data/3310/mysql.log |
    | log_error_verbosity | 3                    |
    +---------------------+----------------------+

    3.Mysql的慢日志(很重要)

      Mysql的慢日志其主要功能是帮助DBA定位数据库性能优化的,这里的数据库性能优化主要是关于以下sql语句上的优化,它的记录信息主要是针对配置参数所设定的阈值而定的。

    slow_query_log=1    ##表示开启慢日志
    slow_query_log_file = /data/mysql/slow.log ##慢日志保存路径
    long_query_time = 0.1  该值是情况而定 ##设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s.所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.不要在这里使用”1″, 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).
    log_queries_not_using_indexes =1  ##这个是记录没有走索引的sql语句
    log_throttle_queries_not_using_indexes = 60  ###设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
    min_examined_row_limit = 100  ###表示扫描的行数大于100行看,如果没有大于100行,即使这个语句执行时间超过了long_query_time的阈值也不会被记录。
    log_slow_admin_statements = 1  #记录执行缓慢的管理SQL,如alter table,analyze table, check table, create index, drop index, optimize table, repair table等
    log_slow_slave_statements = 1  ##记录从库上执行的慢查询语句

      3.1 常用的命令如下:

    • 如果用户希望得到执行时间最长的10条SQL语句,可以运行如下命令;
      mysqldumpslow -s c  -t 10  +慢日志文件
    • 这里也可以用percona-tools中的pt-query-digest工具分析慢日志(该工具会在Mysql工具篇中进行详细介绍) 

        3.2 如果这里我们想要看慢日志中某条sql语句具体执行时所消耗的cpu和内存情况,这个需要在执行sql语句前开启profiling,将其置为1 

    root@192.168.11.8 09:26:  [employees]> show profiles ;
    +----------+------------+---------------------------------+
    | Query_ID | Duration   | Query                           |
    +----------+------------+---------------------------------+
    |        1 | 3.53482900 | select * from salaries          |
    |        2 | 0.00061800 | select * from salaries limit 10 |
    |        3 | 0.04657200 | help 'show profile'             |
    +----------+------------+---------------------------------+
    3 rows in set, 1 warning (0.00 sec)
    
    root@192.168.11.8 09:26:  [employees]> show profile cpu,block io for query 1;
    +----------------------+----------+----------+------------+--------------+---------------+
    | Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
    +----------------------+----------+----------+------------+--------------+---------------+
    | starting             | 0.000182 | 0.000147 |   0.000025 |            0 |             0 |
    | checking permissions | 0.000017 | 0.000014 |   0.000003 |            0 |             0 |
    | Opening tables       | 0.000039 | 0.000032 |   0.000005 |            0 |             0 |
    | init                 | 0.000082 | 0.000071 |   0.000013 |            0 |             0 |
    | System lock          | 0.000026 | 0.000021 |   0.000003 |            0 |             0 |
    | optimizing           | 0.000009 | 0.000007 |   0.000002 |            0 |             0 |
    | statistics           | 0.000032 | 0.000027 |   0.000004 |            0 |             0 |
    | preparing            | 0.000022 | 0.000019 |   0.000003 |            0 |             0 |
    | executing            | 0.000007 | 0.000005 |   0.000001 |            0 |             0 |
    | Sending data         | 3.521625 | 2.091546 |   0.005521 |         3496 |             0 |
    | end                  | 0.006721 | 0.000000 |   0.001642 |         4184 |             0 |
    | query end            | 0.000454 | 0.000000 |   0.000451 |          592 |             0 |
    | closing tables       | 0.000027 | 0.000000 |   0.000022 |            0 |             0 |
    | freeing items        | 0.000109 | 0.000080 |   0.000029 |            0 |             0 |
    | logging slow query   | 0.005451 | 0.000090 |   0.000009 |            8 |             8 |
    | cleaning up          | 0.000028 | 0.000020 |   0.000002 |            0 |             0 |
    +----------------------+----------+----------+------------+--------------+---------------+
    16 rows in set, 1 warning##这里的警告是该参数在以后的版本中会被移除,该信息以后会被收集到performance Schema

      3.3慢日志的分析之后会用pt-query-digest工具进行详解

    4.Mysql之通用日志(general log)

      如果mysql要想记录数据中所有的操作,则必须要开启gener_log日志,和前面不同的是该日志参数只要开启后,对mysql不管有什么操作都会记录在该日志中,其中也包括了错误日志以及慢日志,不过该日志的开启会对性能有严重影响,因此在生产中不建议开启,我们可在调试阶段进行开启,另外该日志主要用途是用做审计的。我们可以通过插件的方式来做。

      4.1 可以通过如下命令进行配置

    root@localhost 14:41:  [employees]> show variables like '%general%';
    +------------------+----------------------------+
    | Variable_name    | Value                      |
    +------------------+----------------------------+
    | general_log      | OFF                        |              ##该选项表示是否开启
    | general_log_file | /data/3307/data/node01.log |
    +------------------+----------------------------+              ##通用日志存放的路径
    2 rows in set (0.00 sec)

        

  • 相关阅读:
    7、css基本选择器、层叠样式
    6、表格标签及表单标签
    5、head内常用标签
    4、body内常用符号
    3、HTML简介
    2、HTTP协议
    Mbedtls和Opesnssl 解码x509Certificate
    Django 学习5--DetailView
    Django 学习四--bootstrap
    Django 学习3--CreateView
  • 原文地址:https://www.cnblogs.com/zmc60/p/14940585.html
Copyright © 2011-2022 走看看