• 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)

        

  • 相关阅读:
    背水一战 Windows 10 (90)
    背水一战 Windows 10 (89)
    背水一战 Windows 10 (88)
    背水一战 Windows 10 (87)
    背水一战 Windows 10 (86)
    背水一战 Windows 10 (85)
    背水一战 Windows 10 (84)
    背水一战 Windows 10 (83)
    背水一战 Windows 10 (82)
    背水一战 Windows 10 (81)
  • 原文地址:https://www.cnblogs.com/zmc60/p/14940585.html
Copyright © 2020-2023  润新知