管理 MySQL 慢查询日志
MySQL 数据库服务器可以在 MySQL 慢查询日志中记录执行时间超过配置阈值的查询,这意味着这些日志有助于轻松解决与慢速应用程序相关的问题。一般来说,一秒被认为是 MySQL 数据库查询的阈值,执行时间超过一秒的查询被记录为慢。
Site24x7 全面的日志管理解决方案默认支持监控 MySQL 慢查询日志。它根据主机、查询时间、锁定时间、发送的行和检查的行等字段对日志进行分类,因此您可以使用这些日志一目了然地进行故障排除。您还可以根据查询时间、锁定时间、检查的行和仪表板上返回的行等不同参数查看前 10 个慢查询。
开启 MySQL 慢查询日志
登录到安装 MySQL 数据库的机器。从 Linux 机器打开终端或从 Windows 机器打开命令提示符,然后执行以下命令。
对于 MySQL 5.1.6 及更高版本:
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.
log-slow-queries=/var/log/mysql/slow-query.log
long_query_time=20
日志管理入门
- 登录到您的Site24x7帐户。
- 在运行 MySQL 数据库的机器上下载并安装Site24x7 服务器监控代理( Windows | Linux )。
- 转到管理> AppLogs> 日志配置文件,然后单击添加日志配置文件。
- 配置文件名称:输入日志配置文件的名称。
- 选择日志类型:从下拉菜单中选择MySQL 慢日志。
- 日志源:从下拉菜单中选择本地文件。
- 要搜索日志的文件列表:包括/var/log/mysql/slow-query.log。这是基于 MySQL 中的配置。
- 选择服务器,然后单击保存。
日志模式
这是 Site24x7 定义的默认模式,用于基于下面提到的示例解析 MySQL 慢查询日志。
在这里,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 名数据库