以下问题将得到解答。
- 如何在 MySQL 中启用慢查询日志
- 如何设置慢查询时间
- 如何读取 MySQL 生成的日志
日志分析日益成为一种威胁。大多数科技公司已经开始使用 ELK 堆栈或类似工具进行日志分析。但是,如果您没有时间花在 ELK 的设置上,只想花一些时间通过您的 on(手动)分析日志,该怎么办。
虽然,这不是最好的方法,但不要低估从终端分析日志的能力。我们也可以从终端有效地分析日志,但我们能做什么或不能做什么是有限制的。我正在发布关于分析 MySQL 日志的基本过程。
以下问题将得到解答。
日志分析日益成为一种威胁。大多数科技公司已经开始使用 ELK 堆栈或类似工具进行日志分析。但是,如果您没有时间花在 ELK 的设置上,只想花一些时间通过您的 on(手动)分析日志,该怎么办。
虽然,这不是最好的方法,但不要低估从终端分析日志的能力。我们也可以从终端有效地分析日志,但我们能做什么或不能做什么是有限制的。我正在发布关于分析 MySQL 日志的基本过程。
(除了@MontyPython 提供的“设置”...)
运行
pt-query-digest
,或mysqldumpslow -s t
要么首先为您提供“最差”查询的详细信息,因此在几十行后停止输出。
我更喜欢long_query_time=1
. 只需几秒钟;您可以指定小于 1。
此外,在更新的版本中,您需要log_output = FILE
.
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