0

0

mysql数据库中的错误日志与慢查询日志分析

P粉602998670

P粉602998670

发布时间:2026-01-31 09:03:11

|

631人浏览过

|

来源于php中文网

原创

MySQL错误日志和慢查询日志需通过log_error、slow_query_log等变量确认是否启用;错误日志中Aborted connection、OOM、InnoDB页损坏等须立即处理;慢日志分析推荐mysqldumpslow或SQL查询mysql.slow_log表。

mysql数据库中的错误日志与慢查询日志分析

如何确认 MySQL 是否启用了错误日志和慢查询日志

MySQL 默认不一定开启这两类日志,尤其慢查询日志默认是关闭的。直接查 SHOW VARIABLES LIKE '%log%' 可能返回一堆配置,但关键就看这几个:

  • log_error:显示错误日志路径(如 /var/log/mysql/error.log),若为空或为 NULL,说明错误日志未启用(常见于 MySQL 8.0+ 的 systemd 管理模式,日志可能走系统 journal)
  • slow_query_log:值为 OFF 表示慢查询日志关闭;ON 才启用
  • slow_query_log_file:慢日志文件路径,若未显式设置,MySQL 会按数据目录 + 主机名生成默认路径(如 /var/lib/mysql/hostname-slow.log
  • long_query_time:判定“慢”的阈值(单位秒),默认是 10.000000,生产环境建议调低到 1.00.5

注意:log_output 决定日志输出方式,FILE 写文件,TABLE 写入 mysql.slow_log 表(需同时启用 slow_query_log),TABLE 方式方便 SQL 查询分析,但有性能开销且不记录非查询语句(如 SETDELIMITER)。

错误日志里哪些内容必须立刻关注

错误日志不是用来“定期翻阅”的,而是出问题时第一排查入口。以下几类信息出现即需人工介入:

  • Aborted connection:频繁出现说明客户端异常断连,可能是网络抖动、超时设置不合理(如 wait_timeout 太小),或应用未正确 close 连接
  • Out of memoryCannot allocate memory:不是 MySQL 内存配额超了,很可能是系统级 OOM killer 杀掉了 mysqld 进程,要查 dmesg -T | grep -i "killed process"
  • InnoDB: Database page corruptionFailed to read from the .ibd file:物理页损坏,立即停止写入,用 innodb_force_recovery 尝试导出数据
  • Plugin 'validate_password' is disabled 类提示:不是错误,但说明插件加载失败,若依赖该插件做密码策略,实际策略并未生效

不要被大量 Starting crash recoveryShutdown completed 刷屏干扰——只要不是高频重启,这些属于正常启停日志。

慢查询日志分析的实用命令与过滤技巧

直接 cattail -f 看原始日志效率极低。优先用官方工具 mysqldumpslow 或结构化处理:

新视窗CMS企业管理程序 5.1
新视窗CMS企业管理程序 5.1

新视窗企业管理系统是一款小巧、实用、利于后续开发的ASP程序。适合大中小型企业的网站建设。1、新闻管理 2、产品管理 3、订单管理 4、广告管理 5、下载管理 6、留言管理 8、单页栏目(如企业简介,资质荣誉)9、人才招聘等等。 新视窗企业管理系统 5.1 更新日志:1、修改产品列表的图片自动缩略,防止图片变形.2、修改后台添加产品分类时,排序ID不写入数据库的错误.3、修改首页企业简介的链接地址

下载
  • 统计最慢的 10 条语句:
    mysqldumpslow -s t -t 10 /var/lib/mysql/hostname-slow.log
  • 统计访问次数最多的 10 条:
    mysqldumpslow -s c -t 10 /var/lib/mysql/hostname-slow.log
  • 只看锁定时间超过 2 秒的:
    mysqldumpslow -s l -t 10 -g "Lock_time: [2-9]" /var/lib/mysql/hostname-slow.log
  • 如果日志是 TABLE 方式存储,可直接 SQL 分析:
    SELECT query_time, lock_time, rows_sent, rows_examined, sql_text FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10;

注意:mysqldumpslow 会自动归并带不同参数的相同语句(如 WHERE id = 1WHERE id = 2 都算作 WHERE id = N),但无法识别函数或子查询变化,真实场景中仍需结合 pt-query-digest 做深度分析。

为什么开了慢日志却没记录明显慢的查询

常见原因不是配置漏了,而是语义或执行路径不符合记录条件:

  • 查询在从库执行,但 log_slow_slave_statementsOFF(MySQL 5.7+ 默认关)
  • 语句被优化器重写后实际执行很快(如命中覆盖索引,rows_examined 很小),但 query_time 仍超阈值——此时 long_query_time 是按实际执行耗时判断的,不受扫描行数影响
  • 使用了 SQL_NO_CACHESQL_CACHE 提示,但 MySQL 8.0 已移除查询缓存,这类语句会被跳过日志记录
  • 客户端连接设置了 long_query_time=0(会话级覆盖全局),但该会话后续又执行了 SET long_query_time=10,导致部分查询漏记

最隐蔽的一点:如果查询触发了隐式类型转换(比如 WHERE phone = 13800138000,而 phoneVARCHAR),优化器可能放弃索引,但 query_time 未必超限——这类问题不会出现在慢日志里,得靠 EXPLAIN 或 Performance Schema 抓。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

751

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

328

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

350

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1304

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

361

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

881

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

581

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

425

2024.04.29

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 816人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号