【MySQL学习】MySQL的慢查询日志和错误日志

news2024/12/23 16:30:08

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:xiaoxie的MySql学习系列专栏——CSDN博客●'ᴗ'σσணღ
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)! 

 一.MySQL的慢查询日志

1.慢查询日志的作用

  1. 性能诊断与优化

    • 慢查询日志记录了执行时间超过预设阈值的所有SQL查询,这些查询可能成为数据库性能瓶颈的关键因素。
    • 通过分析慢查询日志,数据库管理员可以精准地定位到哪些SQL语句执行效率低下,从而针对这些语句进行优化,如改写SQL查询、添加缺失的索引、重构表结构或调整查询策略等。
  2. 资源消耗监控

    • 长时间运行的查询不仅会影响用户体验,还会占用大量的CPU、内存、I/O资源,可能导致其他查询响应变慢甚至引发阻塞。
    • 慢查询日志可以帮助监控系统中消耗资源最多的查询,从而合理分配和管理数据库资源。
  3. 趋势分析

    • 在一段时间内持续观察慢查询日志,可以发现数据库负载的变化趋势,及时预防潜在的性能问题,并对数据库的工作负载模式有更深入的理解。
  4. 安全性与合规性

    • 在某些场景下,异常慢的查询可能是由于SQL注入攻击或其他安全事件导致,通过分析慢查询日志可以帮助发现并解决这类问题。
  5. 自动化工具辅助

    • 结合第三方工具如pt-query-digest(Percona Toolkit的一部分)、mysqldumpslow等,可以自动分析慢查询日志,生成统计报告和优化建议。

总结来说慢查询日志对于我们来说,特别是以后工作的时候,在生产环境下,数据量特别大,可能会达到千万条数据,甚至更多,数据库查询性能至关重要。当数据量达到千万乃至亿级别时,即使是微小的SQL语句效率差异也可能造成显著的性能影响。慢查询日志在这种情况下具有不可忽视的价值,这个时候通过分析慢查询日志,可以帮助我们优化MySQL的性能,保证数据库服务高效稳定运行,理解和熟练运用慢查询日志对于维护大规模数据库系统的性能和稳定性具有直接且重要的意义。

2.如何使用慢查询日志 

 1.启用慢查询日志

修改MySQL服务器的配置文件(通常为my.cnfmy.ini), 使用文本编辑器(如Notepad++、Sublime Text等)打开配置文件。在[mysqld]部分添加以下行以启用慢查询日志:

slow_query_log = ON # 开启慢查询日志
long_query_time = N # 设置慢查询阈值,单位秒,N为执行时间超过多少秒的SQL将被记录
log_slow_queries = /path/to/slow_query.log # 指定慢查询日志的输出文件路径
# 或者在MySQL 5.5.3之后,使用以下配置代替:
slow_query_log_file = /path/to/slow_query.log

 2.配置选项

当配置慢查询日志时,除了基本的启用和设置阈值外,可以设置其他的慢查询日志相关参数,以便更详细地记录慢查询的信息。以下是一些常见的配置选项:

  1. 记录格式:可以选择不同的记录格式,如verbose模式。在verbose模式下,会记录更多细节信息,如查询的执行计划、锁定信息等。这可以帮助更全面地了解慢查询的执行过程。

  2. 记录临时表创建:决定是否记录慢查询中创建的临时表的信息。在某些情况下,临时表的创建可能会对性能产生影响,因此记录这些信息可以帮助分析慢查询的原因。

  3. 记录锁定时间:确定是否记录慢查询中锁定资源的时间信息。当查询导致锁定资源的时间过长时,记录这些信息可以帮助发现潜在的并发问题或者锁等待情况。

这些配置选项可以根据具体需求进行调整,以便更好地了解慢查询的原因和性能瓶颈。通过配置这些参数,可以更详细地记录慢查询日志,为性能优化和故障排查提供更多信息。

3.重启MySQL服务

 修改配置后,需要重启MySQL服务,让新的配置生效。

4.查看和分析慢查询日志

使用文本编辑器可以直接查看慢查询日志文件,但由于日志内容通常较为复杂,可以借助专用工具进行分析,如mysqldumpslow工具(随MySQL Server一起安装)

mysqldumpslow [options] /path/to/slow_query.log

mysqldumpslow可以按照不同的排序规则(如按照查询时间、查询次数等)展示日志中的慢查询信息。

mysqldumpslow [options] /path/to/slow_query.log 是一个用于解析和汇总MySQL慢查询日志的命令行工具。具体含义如下:

 mysqldumpslow 是MySQL自带的一个工具,它用来读取和分析MySQL服务器产生的慢查询日志文件。

要确切知道慢查询日志文件的位置,请查阅MySQL服务器的配置文件(如/etc/mysql/my.cnfC:\ProgramData\MySQL\MySQL Server X.X\my.ini),并在其中查找slow_query_log_file这一行,它后面跟着的就是慢查询日志文件的实际路径。

如果你不确定具体路径,可以通过MySQL客户端登录后执行以下命令来查看当前设置的慢查询日志文件路径:

Sql

SHOW VARIABLES LIKE 'slow_query_log_file';

这条SQL语句将返回慢查询日志文件的完整路径。

  • [options] 表示可选的命令行参数,用来指定如何过滤和排序日志中的查询。例如:

    • -s <sort_order>:按指定的顺序排序查询,默认是按查询时间排序,可选的排序类型包括:
      • t:查询时间
      • at:平均查询时间
      • l:锁定时间
      • al:平均锁定时间
      • r:查询次数
      • ar:平均每次查询的查询次数
    • -t <number>:只显示最频繁或最耗时的前N个查询。
    • -v 或 --verbose:提供更详细的输出信息。
    • -d 或 --debug:启用调试模式。
    • -h:显示帮助信息。
  • /path/to/slow_query.log 是慢查询日志文件的实际路径,mysqldumpslow 将从该文件中读取慢查询记录并进行分析。执行这个命令后,mysqldumpslow 会输出经过排序和汇总后的慢查询信息.

  • 替换 /path/to/slow_query.log 为你实际的慢查询日志文件路径
  • 注意

    实际的慢查询日志文件路径取决于MySQL服务器的配置。MySQL服务器的慢查询日志文件路径通常在MySQL配置文件(如my.cnfmy.ini)中设置,配置项为slow_query_log_file

    默认情况下,慢查询日志文件的位置可能因MySQL安装和配置的不同而在各种路径下,常见的一些默认路径包括:

  • Linux系统上可能的默认是 /var/lib/mysql/hostnameslow.log 或 /var/log/mysql/mysql-slow.log
  • 也可能是用户自定义的路径,例如 /path/to/slow-query.log
  • 要确切知道慢查询日志文件的位置,请查阅MySQL服务器的配置文件(如/etc/mysql/my.cnfC:\ProgramData\MySQL\MySQL Server X.X\my.ini),并在其中查找slow_query_log_file这一行,它后面跟着的就是慢查询日志文件的实际路径。

    如果你不确定具体路径,可以通过MySQL客户端登录后执行以下命令来查看当前设置的慢查询日志文件路径:

    Sql

    SHOW VARIABLES LIKE 'slow_query_log_file';

    这条SQL语句将返回慢查询日志文件的完整路径。

  • 例如

  • mysqldumpslow -s t -t 10 /var/log/mysql/slow_query.log

    这个命令将会显示出日志中执行时间最长的前10个查询。请注意,你需要拥有执行该命令所需的权限,并确保MySQL服务已经运行且开启了慢查询日志功能。

5.优化慢查询

  1. 根据慢查询日志中的SQL语句和附加信息(如执行计划、锁定时间等),可以着手进行SQL优化,包括但不限于:
    • 如果有必要,还可以考虑数据库设计层面的优化。
    • 调整查询逻辑,避免复杂关联;
    • 改写SQL查询语句,避免全表扫描或不必要的临时表创建;
    • 添加或优化索引;

请根据实际版本的MySQL和操作系统环境调整上述步骤,不同版本的MySQL可能有不同的配置项或工具可用。同时,为了不影响线上服务,一般会在非高峰时段开启慢查询日志,并定期对其进行分析处理。

 二.MySQL的错误日志

1.错误日志的作用

  1. 记录错误信息:错误日志记录了MySQL服务器运行过程中发生的错误和警告信息,包括但不限于语法错误、连接失败、权限问题、表损坏、索引错误、内部错误以及其他严重的问题。

  2. 诊断问题:当MySQL服务器发生故障或不正常行为时,错误日志是首要的排障依据。它记录了错误的详细上下文信息,包括错误的时间、错误号、错误消息以及可能导致错误的操作等,便于程序猿迅速定位问题源头。

  3. 审计和合规要求:对于一些高安全性和法规遵从性的场景,错误日志可以作为重要的审计记录,跟踪数据库活动中的异常情况,确保符合企业内部和外部监管机构的安全与合规要求。

  4. 服务器运行状态监控:错误日志还记录了MySQL服务器启动和关闭时的相关信息,包括服务器初始化过程中的状态、配置加载结果以及与其他服务的交互情况。

  5. 预防性维护:通过定期检查和分析错误日志,程序猿可以预见并防止未来可能出现的问题,比如磁盘空间不足、并发控制引起的死锁、资源竞争等情况。

  6. 性能问题线索:虽然错误日志主要不是用来追踪性能问题,但在某些情况下,它也可能包含关于资源耗尽、超时等待等间接指向性能瓶颈的线索。

总之,MySQL错误日志是数据库日常运维和故障排除的重要工具,有助于确保数据库系统的稳定运行和有效管理,我们还是需要重点掌握的.

2.如何错误日志

1.配置错误日志

首先,要在MySQL服务器的配置文件(通常是my.cnfmy.ini)中启用并配置错误日志.使用文本编辑器(如Notepad++、Sublime Text等)打开配置文件在[mysqld]部分添加或修改以下配置项:

[mysqld]
log_error = /path/to/error-log-file.err

1.这里/path/to/error-log-file.err是你想要保存错误日志的完整路径和文件名。 

2.可以通过log_warnings参数控制是否将警告信息也写入错误日志,设置为log_warnings=1表示记录警告信息

2.重启MySQL服务

 修改配置后,需要重启MySQL服务,让新的配置生效。

3.查看错误日志

使用文本编辑器直接打开错误日志文件进行查看,例如:

1less /path/to/error-log-file.err

或者

1tail -f /path/to/error-log-file.err

后者可以实时监控错误日志的增长。

4.分析错误日志

1.错误日志中记录了MySQL服务器启动、运行时遇到的各种错误、警告及关键信息。

2.当MySQL服务无法启动、出现意外停机、查询失败或其他未知问题时,首先要查看错误日志以获取具体的错误信息和堆栈跟踪。

3.根据错误日志中提供的错误编号、错误消息和其他相关信息,可以进一步查阅官方文档或搜索引擎,找到对应的解决方案。

5.管理错误日志大小

针对大型部署,可能还需要设置日志轮转策略,以免单个日志文件过大。这通常通过操作系统级别的日志管理工具或MySQL本身不支持的日志管理插件来实现。

6.调整日志级别

虽然MySQL错误日志主要关注错误和警告,但在某些情况下,也可以通过调整MySQL全局变量(如log_error_verbosity)来改变日志记录的详细程度。

1.log_error_verbosity(从MySQL 5.7.8开始)

这个变量可以设置错误日志的详细级别。默认值为1,即普通模式。将其设置为2,可以得到更详细的错误日志,包括每个线程的堆栈跟踪信息。

SQL

SET GLOBAL log_error_verbosity = 2;

2.log_warnings 

控制是否将警告信息写入错误日志。设置为1或更大值时,MySQL将把警告信息记录到错误日志中。

SQL

SET GLOBAL log_warnings = 1;

需要注意的是,更改全局变量可能会影响到整个MySQL服务器的行为,所以在生产环境中应谨慎操作,并结合具体情况权衡日志详细程度和资源消耗之间的平衡。同时,务必保持对错误日志的定期检查和清理,以避免存储空间的过度消耗。 

以上就是关于MySQL慢查询日志和错误日志的所有内容,这些内容只是特供一个小模版,具体的业务上的还得具体分析.感谢你的阅读.祝你一天愉快.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1579642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8全网独家改进: 卷积魔改 | 变形条状卷积,魔改DCNv3二次创新

💡💡💡本文独家改进: 变形条状卷积,DCNv3改进版本,小幅涨点的前提下相比较DCNv3大幅度运算速度 💡💡💡强烈推荐:先到先得,paper级创新,直接使用; 💡💡💡创新点:1)去掉DCNv3中的Mask;2)空间域上的双线性插值转改为轴上的线性插值; 💡💡💡如…

python之正则表达式(2)

1、贪婪量词和懒惰量词 贪婪量词&#xff1a;也就是尽可能多的匹配字符 懒惰量词&#xff1a;尽可能少的匹配字符&#xff08;在现在的计算机语言中大多默认为贪婪量词若想要使用 懒惰量词就需要在后面加上&#xff1f;即可&#xff09; 代码示例&#xff1a; import rep …

【游戏分析】RPG类型游戏数据关联名称库加密算法

我们找到的无论是周围数组还是数组套链表结构里 都没有发现NPC名称 那么我们在不能直接观察得到的时候 只有单独去找名称属性了 找一个NPC搜索其名称 得到10几个 那么我们尝试修改看看是哪一个 发现是14这个地址 到DO中去看一下 发现周围全是其他的各种字符串 那这里应该…

【蓝桥杯第十二届省赛B】(部分详解)

空间 8位1b 1kb1024b(2^10) 1mb1024kb(2^20) 时间显示 #include <iostream> using LLlong long; using namespace std; int main() {LL t;cin>>t;int HH,MM,SS;t/1000;SSt%60;//like370000ms370s,最后360转成分余下10st/60;MMt%60;t/60;HHt%24;printf("%02d:…

KVM+GFS分布式存储系统构建KVM高可用

概述 本章利用KVM 及 GlusterFS 技术&#xff0c;结合起来从而实现 KVM 高可用。利用 GlusterFS 分布式复制卷&#xff0c;对 KVM 虚拟机文件进行分布存储和冗余。分布式复制卷主要用于需要冗余的情况下把一个文件存放在两个或两个以上的节点&#xff0c;当其中一个节点数据丢失…

基于SSM+Jsp+Mysql的图书仓储管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

JavaSE继承和多态(上)

目录 一.继承的基本使用 1.继承的概念 2.继承的语法 3.父类成员访问 &#xff08;1&#xff09;子类中访问父类的成员变量 1.子类和父类不存在同名成员变量 2.子类和父类成员变量同名 (2)子类中访问父类的成员方法 1.成员方法名字不同 2.成员方法名字相同 二.super关键…

SpringCloudAlibaba基础使用(2024最全、最新)

一、简介二、服务注册配置Nacos2.1 下载启动2.2 服务注册2.3 服务配置2.3.1 NameSpace-GroupID-DataId 三、熔断限流 Sentinel3.1 介绍3.2 下载安装3.3 如何使用3.3.1 流控规则流控模式流控效果 3.3.2 熔断规则慢调用比例异常比例异常数 3.3.3 SentinelResource3.3.4 热点规则3…

分布式ID生成的几种方案(后续待补充)

分布式ID生成的几种方案 分布式ID的特性 唯一性&#xff1a;确保生成的ID是全网唯一的&#xff1b; 高可用性&#xff1a;确保任何时候都能正确的生成ID&#xff1b; UUID 算法核心思想是结合机器的网卡、当地时间、一个随机数来生成UUID&#xff1b; 优点&#xff1a; 本地…

深度学习的数学基础--Homework2

学习资料&#xff1a;https://www.bilibili.com/video/BV1mg4y187qv/?spm_id_from333.788.recommend_more_video.1&vd_sourced6b1de7f052664abab680fc242ef9bc1 神经网络的特点&#xff1a;它不是一个解析模型&#xff0c;它的储存在一堆参数里面&#xff08;确定一个超平…

sql注入方式之联合注入

1.1 靶场环境 系统centos7 IP地址192.168.1.24 1.2 联合注入原理 联合查询注入是联合两个表进行注入攻击&#xff0c;使用关键词 union select 对两个表进行联合查询。两个表的字段要数要相同&#xff0c;不然会出现报错。 1.3 找注入点 找注入点&#xff0c;当输入id1 an…

环形链表 II - LeetCode 热题 26

大家好&#xff01;我是曾续缘&#x1f61b; 今天是《LeetCode 热题 100》系列 发车第 26 天 链表第 5 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xf…

linux特殊引号

可见引号的不同&#xff0c;可以实现对不同内容的引用以及解析

近50位科技企业大咖齐聚共探出海之道,中国企业出海应该怎么卷?

4月2日下午&#xff0c;由中国云产业联盟暨中关村云计算产业联盟&#xff08;简称“云联盟”&#xff09;组织召开的“科技企业出海经验分享”专题闭门研讨会成功召开&#xff0c;云联盟执行会长兼秘书长龚梅&#xff0c;云联盟副秘书长、汉能投资董事总经理赵兰洋以及来自中国…

若依自带vue-cropper上传图片(可旋转、缩放)

2024.4.4今天我学习了如何使用若依的vue-cropper上传图片组件&#xff0c;在工作中遇到一个需求&#xff0c;需要对上传的图片进行旋转的操作&#xff0c;然后我先找到el-upload组件&#xff0c;使用之后发现它有一个自动上传和非自动上传的功能&#xff0c;是不是就可以通过非…

二:深入理解 JAVA 内存模型 JMM

目录 1、为什么要有内存模型1.1、为什么要有多级缓存&#xff1f;1.2、缓存一致性问题1.3、处理器优化和指令重排 2、并发编程的三大问题2.1、原子性问题2.2、有序性问题2.3、可见性问题2.4、三大特性 3、什么是内存模型&#xff1f;3.1、概念3.2、内存模型到底是怎么保证缓存一…

自动驾驶基础技术-无迹卡尔曼滤波UKF

自动驾驶基础技术-无迹卡尔曼滤波UKF Unscented Kalman Filter是解决非线性卡尔曼滤波的另一种思路&#xff0c;它利用Unscented Transform来解决概率分布非线性变换的问题。UnScented Kalman Filter不需要像Extended Kalman Filter一样计算Jacobin矩阵&#xff0c;在计算量大…

LeetCode-热题100:K 个一组翻转链表

题目描述 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节…

在一台恢复测试机器上验证oracle备份有效性

一 目的 定期将生产环境oracle数据库恢复到一台测试环境数据库服务器上&#xff0c;以验证备份是否有效&#xff0c;是否能正常恢复。 二 环境 这里以恢复orcl1库为例&#xff0c;计划在orcl这个实例上进行恢复测试。 三 实验步骤 3.1 在目标端创建和源端一样的备份目录 ①…

从零开始写 Docker(十)---实现 mydocker logs 查看容器日志

本文为从零开始写 Docker 系列第十篇&#xff0c;实现类似 docker logs 的功能&#xff0c;使得我们能够查查看容器日志。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原理&#x…