帮助手册 MySQL 慢查询日志

管理 MySQL 慢查询日志

MySQL 数据库服务器可以在 MySQL 慢查询日志中记录执行时间超过配置阈值的查询,这意味着这些日志有助于轻松解决与慢速应用程序相关的问题。一般来说,一秒被认为是 MySQL 数据库查询的阈值,执行时间超过一秒的查询被记录为慢。

Site24x7 全面的日志管理解决方案默认支持监控 MySQL 慢查询日志。它根据主机、查询时间、锁定时间、发送的行和检查的行等字段对日志进行分类,因此您可以使用这些日志一目了然地进行故障排除。您还可以根据查询时间、锁定时间、检查的行和仪表板上返回的行等不同参数查看前 10 个慢查询。

开启 MySQL 慢查询日志

登录到安装 MySQL 数据库的机器。从 Linux 机器打开终端或从 Windows 机器打开命令提示符,然后执行以下命令。

对于 MySQL 5.1.6 及更高版本:

set global slow_query_log = 'ON';
set global slow_query_log_file ='/var/log/mysql/slow-query.log';
set global long_query_time = 10; (Unit seconds)
FLUSH LOGS;
Restart MySQL.

对于低于 5.1.6 的 MySQL 版本:

Edit the /etc/my.cnf file, and add the following lines to the [mysqld] section.
You can edit the file directly from the Terminal using the vi command.

vi /etc/my.cnf
log_slow_queries = 1;
log-slow-queries=/var/log/mysql/slow-query.log
long_query_time=20

日志管理入门

  1. 登录到您的Site24x7帐户。
  2. 在运行 MySQL 数据库的机器上下载并安装Site24x7 服务器监控代理Windows | Linux )
  3. 转到管理AppLogs日志配置文件,然后单击添加日志配置文件
  4. 配置文件名称:输入日志配置文件的名称。
  5. 选择日志类型:从下拉菜单中选择MySQL 慢日志
  6. 日志源:从下拉菜单中选择本地文件。
  7. 要搜索日志的文件列表:包括/var/log/mysql/slow-query.log。这是基于 MySQL 中的配置。
  8. 选择服务器,然后单击保存

日志模式

# User@Host: $User$ @ [$Host$]<NewLine># Query_time: $QueryTime:decimal$ Lock_time: $LockTime:decimal$ Rows_sent: $RowsSent:number$ Rows_examined: $RowsExamined:number$<NewLine>!use $Database$;<NewLine>!SET timestamp=$DateTime:date:unix$;<NewLine>$Query$;!<NewLine>$NormalizedQuery:word$!

这是 Site24x7 定义的默认模式,用于基于下面提到的示例解析 MySQL 慢查询日志。

日志类型定义中有两个单独的字段,分别称为QueryNormalizedQuery
在这里,Query 字段将包含实际的原始查询,而 NormalizedQuery 字段将包含带有掩码 (XX) 条件值的查询。
默认情况下,代理端的查询字段将被忽略,因为它可能包含用户名和密码等敏感信息。您可以收集原始查询,只需在字段配置中将Ignore this Field at Source旁边的切换按钮更改为No即可。

示例日志

# User@Host: test[test] @ [192.168.1.2]<NewLine># Query_time: 31.896695 Lock_time: 0.000065 Rows_sent: 1023 Rows_examined: 196182<NewLine>use db100db;<NewLine>SET timestamp=1487758318;<NewLine>select USER_ID, EMAIL_ID from USER_ACCOUNT where USER_ID IN ( select USER_ID from USER_MAPPER where ID IN ( select RESOURCEID from appdetails where environment regexp '(.*)Microsoft Windows NT 5.2|Microsoft Windows NT 5.1|Microsoft Windows NT 5.0|Microsoft Windows NT 6.0(.*)'));
# User@Host: test[test] @ [192.168.1.2]<NewLine># Query_time: 31.896695 Lock_time: 0.000065 Rows_sent: 1000 Rows_examined: 196182<NewLine>use db100db;<NewLine>SET timestamp=1487758318;<NewLine>select USER_ID, EMAIL_ID from USER_ACCOUNT where USER_ID IN ( select USER_ID from USER_MAPPER where ID IN ( select RESOURCEID from appdetails where environment regexp '(.*)Microsoft Windows NT 5.2|Microsoft Windows NT 5.1|Microsoft Windows NT 5.0|Microsoft Windows NT 6.0(.*)'));
# User@Host: test[test] @ [192.168.1.2]<NewLine># Query_time: 31.896695 Lock_time: 0.000065 Rows_sent: 560 Rows_examined: 196182<NewLine>use db100db;<NewLine>SET timestamp=1487758318;<NewLine>select USER_ID, EMAIL_ID from USER_ACCOUNT where USER_ID IN ( select USER_ID from USER_MAPPER where ID IN ( select RESOURCEID from appdetails where environment regexp '(.*)Microsoft Windows NT 5.2|Microsoft Windows NT 5.1|Microsoft Windows NT 5.0|Microsoft Windows NT 6.0(.*)'));

上面的示例日志可以分为以下字段,每个字段都将从这里获取其各自的值,然后将上传到 Site24x7。

字段名称 字段值
User test[test]
Host 192.168.1.2
Query time 31.896695
Lock time 0.000065
Rows sent 1023
Rows examined 196182
Database used 100db
Timestamp 1487758318
Query select USER_ID, EMAIL_ID from USER_ACCOUNT where USER_ID IN
( select USER_ID from USER_MAPPER where ID IN ( select RESOURCEID from
appdetails where environment regexp '(.*)Microsoft Windows NT 5.2
|Microsoft Windows NT 5.1|Microsoft Windows NT 5.0|Microsoft Windows NT 6.0(.*)'))

MySQL 慢查询日志仪表板

AppLogs 为每种日志类型创建一个专属仪表板,并默认显示一些小窗件。以下是 MySQL 慢查询日志仪表板中可用的小窗件列表:

  • 慢查询
  • 最长查询时间
  • 检查的最大行数
  • 发送的最大行数
  • 锁定时间排名前 10 的慢查询
  • 随着时间的推移缓慢的查询
  • 排名靠前用户
  • 排名靠前主机
  • 查询时间排名前 10 的慢查询
  • 锁定时间排名前 10 的慢查询
  • 按行检查的前 10 个慢查询
  • 发送行数排名前 10 的慢查询
  • 前 10 名数据库
除了默认小窗件之外,您保存的搜索也将自动添加到仪表板中。

Manage MySQL slow query logs using Site24x7

相关日志类型

帮助手册 MySQL Slow Query Logs