如何在MySQL中启用、使用和分析慢速查询日志?

如何在MySQL中启用、使用和分析慢速查询日志?,mysql,database,logging,mysql-slow-query-log,log-analysis,Mysql,Database,Logging,Mysql Slow Query Log,Log Analysis,将回答以下问题 如何在MySQL中启用慢速查询日志 如何设置慢速查询时间 如何读取MySQL生成的日志 日志分析正日益成为一种威胁。大多数科技公司已经开始使用ELK stack或类似工具进行日志分析。但是,如果你没有时间来设置麋鹿,只想花一些时间通过你的管理员(即手动)分析日志,那该怎么办呢 虽然这不是最好的方法,但不要低估从终端分析日志的能力。从终端,我们也可以有效地分析日志,但我们可以做或不能做的事情存在局限性。我正在发布关于分析MySQL日志的基本过程 show variables lik

将回答以下问题

  • 如何在MySQL中启用慢速查询日志
  • 如何设置慢速查询时间
  • 如何读取MySQL生成的日志
  • 日志分析正日益成为一种威胁。大多数科技公司已经开始使用ELK stack或类似工具进行日志分析。但是,如果你没有时间来设置麋鹿,只想花一些时间通过你的管理员(即手动)分析日志,那该怎么办呢

    虽然这不是最好的方法,但不要低估从终端分析日志的能力。从终端,我们也可以有效地分析日志,但我们可以做或不能做的事情存在局限性。我正在发布关于分析MySQL日志的基本过程

    show variables like '%slow%';
    
    +---------------------------+-----------------------------------+
    | Variable_name             | Value                             |
    +---------------------------+-----------------------------------+
    | log_slow_admin_statements | OFF                               |
    | log_slow_slave_statements | OFF                               |
    | slow_launch_time          | 2                                 |
    | slow_query_log            | OFF                               |
    | slow_query_log_file       | /var/lib/mysql/server-slow.log    |
    +---------------------------+-----------------------------------+
    
    然后呢,

    show variables like '%long_query%';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 5.000000 |
    +-----------------+----------+
    
    将长查询时间更改为您想要的任何时间。超过此值的查询将被捕获到慢速查询日志中

    set global long_query_time = 2.00;
    
    现在,打开慢速查询日志

    set global slow_query_log = 'ON';
    
    flush logs;
    
    转到终端并检查日志文件应该位于的目录

    cd /var/lib/mysql/
    
    la -lah | grep slow
    
    -rw-rw----  1 mysql mysql 4.6M Apr 24 08:32 server-slow.log
    
    打开文件-使用以下命令之一

    cat server-slow.log
    tac server-slow.log
    less server-slow.log
    more server-slow.log
    tail -f server-slow.log
    
    一天内记录了多少个独特的慢速查询

    grep 'Time: 160411.*' server-slow.log | cut -c2-18 | uniq -c
    
    然后呢,

    show variables like '%long_query%';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 5.000000 |
    +-----------------+----------+
    
    将长查询时间更改为您想要的任何时间。超过此值的查询将被捕获到慢速查询日志中

    set global long_query_time = 2.00;
    
    现在,打开慢速查询日志

    set global slow_query_log = 'ON';
    
    flush logs;
    
    转到终端并检查日志文件应该位于的目录

    cd /var/lib/mysql/
    
    la -lah | grep slow
    
    -rw-rw----  1 mysql mysql 4.6M Apr 24 08:32 server-slow.log
    
    打开文件-使用以下命令之一

    cat server-slow.log
    tac server-slow.log
    less server-slow.log
    more server-slow.log
    tail -f server-slow.log
    
    一天内记录了多少个独特的慢速查询

    grep 'Time: 160411.*' server-slow.log | cut -c2-18 | uniq -c
    
    (除了@Montypyton提供的“设置”之外…)

    跑 ,或

    这两种方法都会首先向您提供“最差”查询的详细信息,因此在几十行之后停止输出

    我更喜欢
    long\u query\u time=1
    。以秒为单位;您可以指定小于1的值

    此外,在较新的版本中,您需要
    log\u output=FILE

    (除了@montypyton提供的“设置”之外…)

    跑 ,或

    这两种方法都会首先向您提供“最差”查询的详细信息,因此在几十行之后停止输出

    我更喜欢
    long\u query\u time=1
    。以秒为单位;您可以指定小于1的值

    此外,在较新的版本中,您需要
    log\u output=FILE

    在我看来,slowlog是进行性能分析的最重要工具。在我看来,slowlog是进行性能分析的最重要工具。