MYSQL日志中ERROR GENERAL SLOW日志分析简述

MySQL慢查询诊断四步法:从slow query log到EXPLAIN优化 慢查询是数据库性能问题的核心表征,其本质是SQL执行计划低效与资源消耗失衡的技术现象。理解其原理需把握三个关键层:底层由查询优化器基于统计信息生成执行计划,中层依赖索引结构(B+树)决定数据访问路径,上层受应用层访问模式与配置参数(如long_query_time)共同约束。技术价值在于将模糊的‘变慢’转化为可度量、可追溯、可验证的工程动作——通过mysqld.cnf精准定义慢查询阈值,利用slow query log实现问题捕获,再以EXPLAIN完成执行计划的结构化透视。典型应用场景覆盖高并发Web接口 阅读详情

ERROR日志

我们经常在运行MySQL时会出一些错误,也经常被这些错误搞得晕头转向。当然解决这些问题的首要任务是找到日志信息。
进入mysql执行:

mysql> show variables like '%error%';
+--------------------+-----------------------------+
| Variable_name      | Value                       |
+--------------------+-----------------------------+
| log_error          | /usr/local/mysql/mysqld.log |
+--------------------+-----------------------------+

该日志记录三个级别error、warning、information。
如果你的日志文件找不到error信息,并且你希望认为制造ERROR错误那么可以通过以下方法:

人为制造error信息:

  1. 将表文件ibd重命名
#data也就是数据库文件存放位置
[root@localhost data]# cd /home/data/mysql/data/test
#aaaa是表名
[root@localhost data]# mv aaaa.ibd aaaa.ibd
#mysqld5612是mysql服务名称
[root@localhost data]# service mysqld5612 restart 

找不到data目录,可以通过以下命令查找
mysql> show variables like '%datadir%';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /home/data/mysql/data/ |
+---------------+------------------------+
  1. 写满磁盘,制造无法录入数据,报ERROR信息(没有尝试)
    dd if=/dev/zero bs=64 count=3200000000 of=/tmp/run/1gb.file
    经过以上步骤重启mysql数据库,我相信你的日志文件中已经有error信息了。嘿嘿。例如我把t5表的ibd文件修改后报如下错误:
[root@localhost mysql]# more mysqld_error.log 
2015-07-21 01:52:50 7f037bb7a720  InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
2015-07-21 01:52:50 4268 [ERROR] InnoDB: Could not find a valid tablespace file for 'test/t5'. See http://dev.my
sql.com/doc/refman/5.6/en/innodb-troubleshooting-datadict.html for how to resolve the issue.
2015-07-21 01:52:50 4268 [ERROR] InnoDB: Tablespace open failed for '"test"."t5"', ignored.
2015-07-24 00:46:30 7f5d2843f720  InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.

获得全局ERROR信息

写入log1_ERROR.log文件:
more /usr/local/mysql/mysqld.log|grep ERROR -i > log1_ERROR.log

抓取innodb的error信息

写入log1_Innodb_Error.log文件
more /usr/local/mysql/mysqld.log |grep InnoDB |grep ERROR > log1_Innodb_Error.log

抓取独立的非ERROR innodb信息

more /usr/local/mysql/mysqld.log |grep InnoDB |grep -v Note |grep -v Error |more > log1_InnoDB.log

抓取socket信息

more /usr/local/mysql/mysqld.log |grep socket |grep ERROR > log1_ERROR.log

抓取note信息

more /usr/local/mysql/mysqld.log|grep Note > log1_Note.log

抓取Warning 信息

more /usr/local/mysql/mysqld.log|grep Warning > log1_Warning.log

GENERAL日志

general日志常用于数据库审计,他记录数据库的所有操作(ddl 数据库定义结构语句,dml 数据库增删改操作,select数据库查询操作)。开启general log 会损耗3% – 5%发性能,但检查执行轨迹,可以发现slow无法发现的问题。

general日志默认是关闭的。

可以通过以下命令开关

开启:
set global general_log = on;或者set global general_log = 1;
关闭:
set global general_log = off;或者set global general_log = 0;

查看日志开启状态及日志地址

可以通过

mysql> show variables like '%general%';
+------------------+-------------------------------------+
| Variable_name    | Value                               |
+------------------+-------------------------------------+
| general_log      | ON                                  |
| general_log_file | /home/data/mysql/data/localhost.log |
+------------------+-------------------------------------+
2 rows in set (0.00 sec)

查看general日志

[root@localhost data]# tail -f localhost.log
/usr/local/mysql/bin/mysqld, Version: 5.6.13-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /usr/local/mysql/mysql.sock
Time                 Id Command    Argument
150823  3:55:40     2 Query show variables like '%general%'
150823  3:57:49     2 Query SELECT DATABASE()
            2 Init DB   test
150823  3:58:04     2 Query select * from t1
150823  3:58:16     2 Query select * from t1 where id=1
150823  3:58:27     2 Query create database t5
150823  3:58:52     2 Query delete from t1 where id=2
150823  3:59:02     2 Query select * from t1
150823  4:09:47     2 Query show variables like '%error%'

SLOW日志

检查slow日志是数据库管理及优化中必不可少的工作,每天都需要检测及时发现数据库问题。保证数据库稳定运行。

slow日志开启

  1. 在my.cnf上:
slow_query_log #声明记录slow日期
long_query_time = 0.3#大于3秒记录
slow_query_log_file = /home/data/mysql/data/slow.log
  1. 在线实时:
    set global slow_query_log=1;#重启数据库失效

slow log 关闭

my.cnf里面注释 #slow_query_log
在线关闭 :set global slow_query_log=0;

如何利用slow log定位mysql数据库异常信息

其实定位有问题的sql很简单,就关键两点,数量和时间。
- 看count排名
- 看Time排名

分析脚本mslow.sh

该脚本使用的工具是mysql自带的slow分析工具mysqldumpslow,直接可以使用,网上关于该工具的教程一大堆,这篇博文就不在赘述了我直接把我写的分析脚本贴出来,方便大家使用。该脚本主要做的事情如下:
1. 抽取slow日志,按执行次数统计并写入单独文件
2. 按执行时间统计并写入单独文件

#!/bin/bash
echo "#######M_SLOW.SH########"
#声明日期变量
datestr=$(date -d "yesterday" +"%Y-%m-%d_%H%M%S")
#声明mysql命令变量
mysql_command=/usr/local/mysql/bin/mysql
#声明mysqldumpslow变量
mysqldumpslow_command=/usr/local/mysql/bin/mysqldumpslow
#进入slowlogs目录,保证这个目录是有效存在的
cd /usr/local/mysql/slowlogs
#slowlogs目录下新建日期命名的文件夹
mkdir $datestr
cd $datestr
#关闭slow日志
$mysql_command -uroot -proot -e 'set global slow_query_log=0;';
#查看是否关闭
$mysql_command -uroot -proot -e 'show variables like "slow_query_log";';
#如果mysqld_slow存在则删除
rm -rf mysqld_slow.log
#将slow日期放到当前日期目录
cp /usr/local/mysql/mysqld_slow.log ./
#清空数据库slow日志,保证下次写入新的slow日志
> /usr/local/mysql/mysqld_slow.log
#开启slow日志
$mysql_command -uroot -proot -e 'set global slow_query_log=1;';
$mysql_command -uroot -proot -e 'show variables like "slow_query_log";';
#-s 排序 c(count)按执行数量排序 2返回两条 写入mysqld_slow_count_日期.log文件
$mysqldumpslow_command -s c -t 2 mysqld_slow.log > mysqld_slow_count_$datestr.log
#-s 排序 at按平均查询时间排序 2返回两条 写入mysqld_slow_time_日期.log文件
$mysqldumpslow_command -s at -t 2 mysqld_slow.log > mysqld_slow_time_$datestr.log

ps:写完脚本后注意添加执行权限chmod +x mslow.sh
执行方法# ./mslow.sh
一般都是通过定时任务执行脚本,一天一次,这样就可以实现相对自动的数据库管理了。
比如用crontab(具体用法网上很多)
每天0点执行一次:00 00 * * * /root/mslow.sh >> /tmp/check_slow.log 2>&1
需要注意的是执行脚本如果报Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236说明无法返回分析数据,可能是因为返回数量多或者是slow日志中就可返回的数量小于设定的返回数量,也就是 -s at -t 2 中的2这个参数,请酌情调整,一般设为10左右

执行mslow.sh脚本结果如下:

[root@localhost slowlogs]# ll
total 4
drwxr-xr-x. 2 root root 4096 Aug 21 10:32 2015-08-20_103237 这个就是datestr日期文件名
[root@localhost slowlogs]# cd 2015-08-20_103237/
[root@localhost 2015-08-20_103237]# ll
total 12
-rw-r--r--. 1 root root  303 Aug 21 10:32 mysqld_slow_count_2015-08-20_103237.log 按执行次数排序
-rw-r-----. 1 root root 3467 Aug 21 10:32 mysqld_slow.log copy过来的slow日志
-rw-r--r--. 1 root root  216 Aug 21 10:32 mysqld_slow_time_2015-08-20_103237.log 按执行时间排序

完

MySQL故障诊断操作系统:三步定位法与五类日志交叉验证 MySQL故障排查本质上是系统性工程问题,而非错误码查表。其核心在于理解数据库分层架构(连接层→服务层→数据层)与多源日志协同机制(error log、slow log、binary log等)。真实生产环境中,83%的‘报错’实为OS配置、网络策略或事务逻辑缺陷所致,如SELinux拦截、socket路径错配、死锁暴露业务顺序缺陷等。掌握performance_schema动态监控、pt-tools深度分析及sys schema语义化视图,可将模糊问题转化为可验证假设。本文聚焦可复用的诊断SOP设计,覆盖 阅读详情

相关推荐

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

MySQL学习之分区一

MySQL从5.1版本开始支持分区功能,它允许可设置的一定逻辑,跨文件系统分配单个表的多个部分,但是就访问数据库而言,逻辑上还是只有一个表。还是老样子,在学习新知识之前都先带着问题去寻找想要的答案:1、什么是分区?2、为什么分区?好处在哪?3、如何分区?什么是MySQL分区?一开始也讲了,根据一定逻辑规则,将一个表拆成多个更小更容易管理的部分。例如我们新建一张表利用range分区逻辑上还是只有一张...

LancoLiu 1200

BCIC IV 2a数据集:从下载到实战应用全解析

本文全面解析了BCI Competition IV 2a(BCIC IV 2a)数据集的应用流程。从官方渠道下载数据、解析其结构,到在MATLAB和Python环境中进行数据导入、预处理(包括处理特殊受试者A04T),并详细演示了从特征提取(如CSP)到分类(如LDA、SVM)的完整实战步骤,为脑机接口研究者提供了从入门到实践的清晰指南。

weixin_28235513的博客 972

MySQL的查询日志操作

一、同大多数的数据的一样,日志其实是MySQL数据中重要的一部分,此文章是描述关于MySQL的查询日志的,所用的环境是Window环境。 通常的日志包括:错误日志、二进制日志、通用日志、慢查询日志、等等。这些日志的存在,可以在数据出现异常时候,帮助我们快速定位异常和处理异常。 在MySQl的 Command Line Client下面输入命令: show variables like

cyy@king的博客 564

游戏开发实战:用UE4 Marschner模型打造次世代头发渲染(附Shader代码解析)

本文详细解析了如何在UE4中使用Marschner模型实现次世代头发渲染,包括Shader代码逐行解读与参数调优。通过对比传统Kajiya-Kay模型,展示了Marschner模型在物理精确性和视觉效果上的优势,并提供了性能优化与实战技巧,帮助技术美术师提升游戏角色渲染品质。

weixin_28223453的博客 240

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 511

MySQL 系统文件你了解吗

日志文件 查看错误日志 show variables like '%log_error%' 查看通用查询日志 show variables like '%general%' 二进制日志binary log 记录执行的更改操作 show variables like '%log_bin%';//是否开启 show variables like 'binlog' ;//参数查看 show binary logs; //查看日志文件 慢查询日志 show variables like '%s

醉鱼的博客 374

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

MySQL 笔记四

索引的使用: 当使用数据库十分慢的时候:找到哪慢-->为什么慢--> 慢查询日志(找到是哪个数据库的那张表超出了阈值): MySQL的日志类型: 日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以 根据日志分析和解决问题,从而对数据库进行恢复。 日志的分类: 认识慢查询日志: 慢查询日志用于记录MySQL数据库中响应时间超过指定阈值的语句。慢查询日志通常也被称之为慢日志,因为它不仅仅只针对SELECT语句,像INSERT、UPDATE、DE.

m0_60974765的博客 794

Qt QTableView排序

在开发过程中,我们需要通过点击表头来对QTableView或QTreeView等一系列高级视图进行排序操作,以下是进行排序的步骤。首先创建了一个QStandardItemModel对象或者继承QAbstractTableModel类作为数据模型,并设置了一些数据。然后创建一个QTableView对象,并将数据模型设置为其模型。接下来,创建一个QSortFilterProxyModel对象,并将QStandardItemModel对象设置为其源模型。然后设置QTableView开启排序功能。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2643

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

写研究目标时,先明确研究问题,直接回应前文提到的研究缺口,如 “This study aims to investigate whether X modulates Y via the Z pathway in human cells.”然后再提出你的研究假设,当理论依据清晰时,可以用如 “We hypothesized that inhibiting X would rescue Y deficiency in this model.”的句子点出研究目标。要求:1)明确陈述本研究拟解决的核心科学问题;

智能AI让学术科研更容易 180

Mysql Getshell总结

获取网站根目录方式 (1) phpinfo() 页面:最理想的情况,直接显示web路径 (2) web报错信息:可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径 (3) 一些集成的web框架:如果目标站点是利用phpstudy、LAMPP等之类搭建的,可以猜测默认路径或者通过查看数据库保存的路径默认路径 winserver的iis默认路径c:\Inetpub\wwwroot linux的nginx一般是/usr/local/nginx/html,/home/wwwroot/default,/usr.

qq_51478862的博客 1万+

【项目实战】自动化测试软件VectorCAST介绍

VectorCAST是一款先进的自动化测试软件。VectorCAST是一款功能强大、易于使用的自动化测试软件。VectorCAST适用于各种嵌入式系统的测试。VectorCAST为嵌入式系统的测试提供了一种高效、可靠的解决方案。VectorCAST提供了一整套完整的测试工具,包括测试管理、代码覆盖、缺陷定位、报告生成等,以帮助开发人员提高测试效率,确保软件质量。VectorCAST支持。

奶爸的编程之路,也就一周冷个三天 2008

MySQL日志和监控

MySQL各种日志的分析和执行计划的解析

Java大数据联盟 2408

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MySQL日志梳理(服务器层)

MySQL日志系统详解:本文梳理了MySQL三大类日志功能与配置方法。服务器层日志包含错误日志(Error Log)、慢查询日志(Slow Query Log)和通用查询日志(General Query Log),分别用于故障排查、SQL性能优化和审计跟踪;存储引擎层日志主要指InnoDB的重做/回滚日志;内部辅助日志包含DDL日志。文章重点介绍了各类日志的开启方式、配置参数及分析方法,特别对主从复制依赖的二进制日志(Binlog)和中继日志(Relay Log)的同步机制进行了说明。通过合理配置这些日志,

西岭千秋雪的博客 896

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MySQL 的日志分析

MySQL日志系统是保证数据一致性和高可用的核心组件,主要包括事务日志(Redo/Undo Log)和服务层日志(Binlog等)。Redo Log确保事务持久性和崩溃恢复,采用顺序IO写入;Undo Log支持事务回滚和MVCC实现。Binlog用于主从复制和数据恢复,记录逻辑变更。此外还有慢查询日志、错误日志等辅助工具。使用时需权衡可靠性(如sync_binlog设置)与性能,并合理配置日志大小和格式。监控日志状态和定期验证备份完整性对系统稳定性至关重要。

weixin_39956506的博客 1585

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

mysql四种日志分析

mysql四种日志分析 网址:https://segmentfault.com/a/1190000003740891 0x01.About MySQL有四种类型的日志:Error Log、General Query Log、Binary Log 和 Slow Query Log。 (1)第一种错误日志,记录MySQL运行过程ERROR,WARNING,NOTE等信息,系统出错或者某条记录...

空白_回忆的博客 1926

MySQL 8.0 应急响应实战:3步定位SQL注入攻击源与日志分析取证

本文详细介绍了MySQL 8.0在遭遇SQL注入攻击时的应急响应实战方法,包括3步定位攻击源与日志分析取证。通过通用查询日志、错误日志和慢查询日志的分析,快速识别攻击特征;结合IP关联分析和SQL语句还原技术,追踪攻击源并还原攻击行为;最后提供紧急处置措施、证据固定流程和长效防护策略,帮助管理员有效应对SQL注入威胁。

wjxbj的博客 1103

mysql通用日志分析_【DB_MySQL】MySQL日志分析

MySQL数据库常见的日志有:错误日志(log_error)、慢查询日志(slow_query_log)、二进制日志(bin_log)、通用日志(general_log)开启慢查询日志并分析开启慢查询日志:set global slow_query_log=1; 在线开启。如果MySQL发生重启,就会失效,如果要永久生效,就必选修改配置文件。slow-query-log-file:新版(5.6及以...

weixin_39601657的博客 191

Mysql日志简介之一(Error Log、Slow Query Log、General Query Log)

日志一直都是运维人员处理问题的重要依据,Mysql也不例外,包含了许多类型的日志,下文将具体介绍一下mysql各种日志的作用及相关操作。 基础材料: CentOS7.5 MySQL 5.7.24 mysql包含的日志有: 1.Error Log 错误日志 2.Slow Query Log 慢查询日志 3.General Query Log查询日志 4.redo log 重做日志 ...

一梦如是的博客 424

MySQL---八大日志文件

MySQL中存在着以下几种日志:重写日志(redo log)、回滚日志(undo log)、二进制日志(bin log)、错误日志(error log)、慢查询日志(slow query log)、一般查询日志(general log)、中继日志(relay log)、数据定义语句日志redo log是一种基于磁盘的数据结构,用来在MySQL宕机情况下将不完整的事务执行数据纠正,redo日志记录事务执行后的状态。当事务开始后,redo log就开始产生,并且随着事务的执行不断写入redo log file中

sc35262的博客 426

MySQL参考手册第5章:日志管理

1 日志概述         MySQL服务器使用五种日志,分别是general_log,error_log,slow_log,binlog,relay_log。     默认并不开启日志。若开启日志,通常将日志写入datadir下。通过flush logs方式可以指示服务器关闭当前日志并启用新日志文件。     其中general log和slow query log可以动态配置打

zzulp的专栏 3312

Mysql会产生几种日志

MySQL日志系统分为Server层和InnoDB引擎层两大类共7种核心日志。Server层包含错误日志(记录运行错误)、二进制日志(记录数据修改SQL)、慢查询日志(记录超时SQL)、通用查询日志(记录所有SQL)和中继日志(主从复制使用)。InnoDB引擎层包含重做日志(Redo Log,保障事务持久性)和回滚日志(Undo Log,支持事务回滚和MVCC)。其中二进制日志用于主从复制和数据恢复,重做日志用于崩溃恢复,回滚日志则记录数据修改前的状态。不同日志各司其职,共同保障MySQL的数据安全与性能优

ywl470812087的博客 334

Bonsai-demo 低显存优化指南:BONSAI_MMPROJ_CPU 一键释放 0.9GB VRAM 的隐藏技巧

Bonsai-demo 是 PrismML 推出的 Bonsai 超低比特大模型本地部署演示项目,支持在 Mac、Linux、Windows 上运行 1-bit / 三值量化的 Bonsai 模型。对于显存紧张的显卡,环境变量 **BONSAI_MMPROJ_CPU** 是一个隐藏技巧:只需设成 `1`,就能把 27B 视觉投影器从显存挪进内存,**白白释放约 0.9 GiB VRAM** 给上下

gitblog_00876的博客 844

Linux服务器入侵应急响应实战:MySQL数据库安全排查与日志分析指南

在信息安全领域,应急响应是处理安全事件的核心流程,其核心在于快速定位、遏制和恢复。从技术原理上看,攻击者常通过系统漏洞、弱口令或应用层注入等方式入侵服务器,其中数据库往往是关键目标。Linux系统日志和MySQL日志记录了丰富的操作痕迹,通过关联分析这些日志,可以追溯攻击路径、识别恶意行为并评估影响范围。这项技术的价值在于,它不仅能在事件发生后提供取证依据,更能帮助运维和安全人员构建主动防御体系,提前发现潜在风险。在实际应用场景中,无论是应对SSH暴力破解、Webshell植入,还是数据库权限滥用,系统性的

weixin_33966095的博客 504
上一篇: mysql日志设置
下一篇: MYSQL binlog简述及简单操作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值