当前位置: 首页 > news >正文

MySQL 日志(一)

本篇主要介绍MySQL日志的相关内容。

目录

一、日志简介

常用日志

一般查询日志和慢查询日志的输出形式

 日志表

二、一般查询日志 

三、慢查询日志

四、错误日志


一、日志简介

常用日志

在MySQL中常用的日志主要有如下几种:

这些日志通常情况下都是关闭的,需要我们通过对应的选项来打开。但也有意外,在windows中,错误日志是默认开启的,而在Linux中,则默认开启了二进制日志和错误日志。这些日志一旦开启,会默认将记录日志信息的文件保存到MySQL的数据目录(data)中。


一般查询日志和慢查询日志的输出形式

在MySQL中我们可以通过设置--log-output这个选项来控制一般查询日志和慢查询日志的输出形式式,这个选项一共有三个value值,具体如下:

  • TABLE:将日志信息输出到对应的日志表中
  • FILE:将日志信息输出到日志文件中
  • NONE:不输出日志信息

如果没有设置value值,默认为FILE,如果指定了多个value值,则这多个value值都生效,也就是说可以既输出到表又可以输出到文件,需要注意的是NONE的优先级最高,这也就意味着只要包含NONE其它的value值都失效。


 日志表

前面我们提到了日志表,那么什么是日志表呢?日志表就是根据日志信息生成的表,其字段对应着日志信息中的各部分内容,新增一条日志就是往日志表中插入一行数据,我们可以通过日志表来查询所需要的日志信息。

通过下面的SQL语句我们能够查看日志表的建表信息

show create table 日志表名称

下面我们尝试查询一下一般查询日志的日志表的建表信息(表名为general.log) 

表中字段的具体含义将在后文介绍。

使用日志表主要有以下两点好处:

  • 可以通过SQL查询日志信息,有利于我们过滤日志内容,快速找到我们想要的日志信息
  • 客户端能够以表查询的方式来获取日志信息,不在需要登录服务器主机访问文件系统 

接下来我们详细介绍一下部分日志。

二、一般查询日志 

一般查询日志主要用来记录客户端建立连接和断开连接的相关信息,以及服务端从服务端接收的每一个SQL语句,因此如果开启了一般查询日志将会消耗大量的系统资源,因此,通常情况下,不建议开启。一般查询日志的开启与关闭可以通过 --general_log选项来开启与关闭。一般查询日志的文件名默认为host_name(当前机器的名称).log,这个文件名可以通过general_log_file来设置。

一般查询日志的文件内容如下:

在该文件中,我们可以看到服务器执行的每一条SQL以及连接的一些相关信息。

前面我们了解过,我们可以通过表查询的方式来查询一般查询日志 ,查询的内容具体如下:

通过上面的内容可以发现我们查询的具体SQL是只是一个编码,因此我们需要将其转换为可读的字符串,我们可以使用CAST函数来实现该功能,CAST的使用语法如下:

CAST(要转换的内容 AS 要转换为的类型)

此时我们可以通过CAST优化一下我们的查询语句:

SELECT event_time ,thread_id, server_id, command_type, CAST(argument AS CHAR) AS query FROM mysql.general_log;

我们再按这条语句进行查询,就能看到具体的SQL语句了 

三、慢查询日志

在MySQL中,慢查询日志主要用来记录那些执行时间和检查的行数超过一定阈值的SQL语句,时间阈值通过log-query-time来指定,行数的阈值通过min_examined_row_limit来指定。对于慢查询日志记录的SQL,我们需要进行分析和优化,分析时我们可以使用前面介绍过的MySQldumpslow客户端程序,需要注意的是获取锁的时间并不计入执行时间,只计入语句的执行时间和释放锁的时间,只有这个时间超过阈值,才会记入日志。因此,日志中语句的顺序可能与执行的顺序不同。

下面我们来看一下慢查询日志使用时的注意事项:

  • log_query_time的默认值为10,最小可设置为0
  • 慢查询日志默认为关闭,需要通过--slow_query_log来开启
  • 慢查询日志文件名默认为host_name-slow.log,该文件默认保存在MySQL的数据目录中。如果需要修改文件名,可以通过slow_query_log_file来修改
  • 默认情况下,慢查询日志不记录管理语句(管理语句包括ALTER TABLE 、ANALYZE TABLE 、 CHECK TBALE、CREATE INDEX 、DROP INDEX、OPTIMIZE TABLE和REPAIR TABLE。)如果要记录管理语句,需要设置log_slow_admin_statement为开启。
  • 默认情况下,慢查询日志不记录不使用索引的查询,如果要记录不使用索引的查询,需要通过log_queries_not_using_indexs系统变量来设置。需要注意的是,在开启记录不使用索引的查询后,将会大大增加写入日志的SQL的数量,因此我们需要通过log_throttle_queries_not_using_indexes系统变量来设置每分种写入慢查询日志的同类查询的数量,以免慢查询日志太大造成影响,该变量的默认值为0,表示无限制。

在MySQL中,主要有两种查看慢查询日志的方式,一种是通过慢查询日志文件,一种则是通过慢查询日志表。

慢查询日志文件中一条日志的内容大体如下:

 

其中Query_time表示SQL语句的执行时间,单位为秒,Lock_time表示为该语句获取锁的时间,单位为秒,Rows_sent表示服务端发送到客户端的行数,Rows_examined为服务端检查的行数。

在慢查询日志中还有还有一些额外的隐藏字段,这些字段默认关闭,如果要启用的话,可以通过系统变量--log-slow-extra。这些隐藏的字段如下:

慢查询日志还可以通过对应的表(slow_log)来查询,slow_log的建表语句如下:

表中的字段的内容与日志文件是对应的。 

四、错误日志

MySQLd的启动与关闭的次数,诊断信息,以及服务器运行期间发生的错误和警告一般记录在错误日志中,例如MySQL需要自动检查或者修复一个表,就会在错误日志中写下一条日志,错误日志默认使用UTF-8编码,并用英语来生成记录。

错误日志可以输出到控制台也可以输出到指定文件中,“控制台”表示stderr标准错误输出。

在Windows中,mysqld通过--log-error和--console来指定错误日志是输出到文件还是输出到控制台,如果指定了--consle则输出到控制台,如果指定了--log-error则输出到指定的文件。如果两者都有指定的话,那么-log-error会失效。如果没有指定-log-error,或者没有指定具体文件,那么会自动在数据目录生成一个host_name.err的日志文件。在Unix和Linux系统中,输出到文件还是输出到控制台,都由-log-error来指定,如果-log-error的值为stderr则输出到控制台,如果为一个文件名,则输出到该文件,如果-log-error没有指定值,则跟在Window中一样,在数据目录下生成一个host_name.err文件。前面中提到的指定文件都可以指定为绝对路径,表示,将错误日志输出到该位置的文件中。

在错误日志中主要包含以下几个核心字段:

  • time:时间戳,精度为微妙
  • msg:错误日志的描述
  • prio:事件优先级,包括System event-系统(0),Error event-错误(1),Warning event-警告(2)或者 Note/infomation event -通知/提示事件(3),值越小优先级越高
  • err_code:事件错误代码
  • err_symbol:以字符串形式表示的事件错误符,例如‘ER_DUP_KEY'
  • SQL_state:事件sqlstate值,与error_symbol对应,例如’ER_DUP_KEY'对应的SQLSTATE为23000
  • subsystem:事件发生的子系统。

 对于当前已经定义的错误事件的类型,我们可以通过如下SQL语句来查询

SELECT * FROM performance_schema.events_errors_summary_global_by_error WHERE SUM_ERROR_RAISED <> 0\G

我们来具体执行一下该sql 

此时我们就能知道当前发生过哪些类型的错误事件 。需要注意的是,对于Mysql对我们平常所执行的一些有语法问题的SQL的错误提示,是不会记录到错误日志中的,例如:

 当我们使用FLUSH ERROR LOGS、FLUSH LOGS 、 mysqladmin flush-logs命令来刷新错误日志时,服务器会将正在写入的任何错误日志文件关闭并重新打开。如果重新打开时,原来文件名的文件不存在了,就会重新创建一个原来文件名的错误日志文件,因此,当我们需要重命名文件用来做备份文件时,可以先将原本的文件重命名,然后在执行刷新操作,生成一个新的错误日志文件。具体可以进行如下操作(这里错误能日志的原始名为 host_name.err):

mv host_name.err  host_name.err-old #重命名文件

mysqladmin flush-logs #刷新文件

mv host_name.err-old 备份目录  #将重命名的文件移动到备份目录

相关文章:

MySQL 日志(一)

本篇主要介绍MySQL日志的相关内容。 目录 一、日志简介 常用日志 一般查询日志和慢查询日志的输出形式 日志表 二、一般查询日志 三、慢查询日志 四、错误日志 一、日志简介 常用日志 在MySQL中常用的日志主要有如下几种&#xff1a; 这些日志通常情况下都是关闭的&a…...

XML 编辑器:功能、选择与使用技巧

XML 编辑器&#xff1a;功能、选择与使用技巧 简介 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。由于其灵活性和广泛的应用&#xff0c;XML编辑器成为开发者、数据管理者和内容创作者的重要工具。本文将探讨XML编辑器的功能、选择标准以及…...

单例模式(设计模式)

文章目录 概述1. 饿汉式&#xff08;hungry Initialization&#xff09;2. 懒汉式&#xff08;Lazy Initialization&#xff09;3.双重检查锁定&#xff08;Double-Checked Locking&#xff09;4. 静态内部类&#xff08;Static Inner Class&#xff09;5. 枚举&#xff08;Enu…...

提升你的编程体验:自定义 PyCharm 背景图片

首先&#xff0c;打开 PyCharm 的设置菜单&#xff0c;点击菜单栏中的 File > Settings 来访问设置&#xff0c;也可以通过快捷键 CtrlAItS 打开设置。 然后点击Appearance & Behavior > Appearance。 找到Background image...左键双击进入。 Image:传入自己需要设置…...

SpringCloud与Dubbo区别?

相同点: dubbo与springcloud都可以实现RPC远程调用。 dubbo与springcloud都可以使用分布式、微服务场景下。 区别: dubbo有比较强的背景,在国内有一定影响力。 dubbo使用zk或redis作为作为注册中心 springcloud使用eureka作为注册中心 dubbo支持多种协议&#xff0c;默认使用…...

简单Mesh多线程合并,使用什么库性能更高

1&#xff09;简单Mesh多线程合并&#xff0c;使用什么库性能更高 2&#xff09;Unity Semaphore.WaitForSignal耗时高 3&#xff09;VS编辑的C#代码注释的中文部分乱码 4&#xff09;变量IntPtr m_cachePtr切换线程后变空 这是第389篇UWA技术知识分享的推送&#xff0c;精选了…...

长亭培训加复习安全产品类别

下面这个很重要参加hw时要问你用的安全产品就有这个 检测类型产品 偏审计 安全防御类型 EDR类似于杀毒软件 安全评估 任何东西都要经过这个机械勘察才能上线 安全管理平台 比较杂 比较集成 审计 漏扫 评估 合在这一个平台 也有可能只是管理 主机理解为一个电脑 安了终端插件…...

memcached介绍和详解

Memcached 是一种高性能、分布式内存缓存系统&#xff0c;常用于加速动态 web 应用程序的性能&#xff0c;通过缓存数据库查询结果、对象等数据&#xff0c;减少对数据库的访问压力&#xff0c;从而提高响应速度和系统吞吐量。 ### Memcached 的特点和工作原理 #### 特点 1. …...

Spring boot 注解实现幂等性

1. 添加 Spring AOP 依赖 在 pom.xml 中添加如下依赖&#xff1a; <dependencies><!-- Spring AOP dependency --><dependency><groupIdorg.springframework.boot</groupId><artifactIdspring-boot-starter-aop</artifactId></depend…...

NVIDIA Jetson AI边缘计算盒子

这里写自定义目录标题 烧录系统安装Jetpack安装cuda安装Pytorch安装onnxruntime安装qv4l2 烧录系统 选择一台Linux系统&#xff0c;或者VMware的电脑作为主机&#xff0c;烧录系统和后面安装Jetpack都会用到。 根据供应商的指令烧录的&#xff0c;暂时还没验证官方烧录&#x…...

React核心概念、主要特点及组件的生命周期

在前端开发的世界中&#xff0c;React以其独特的魅力和强大的功能&#xff0c;成为了构建用户界面的首选框架之一。本文将深入探讨React的核心概念、主要特点以及组件生命周期 React简介 React是由Facebook开发并开源的前端JavaScript库&#xff0c;专门用于构建可重用的UI组…...

Java基础面试重点-1

0. 符号&#xff1a; *&#xff1a;记忆模糊&#xff0c;验证后特别标注的知识点。 &&#xff1a;容易忘记知识点。 *&#xff1a;重要的知识点。 1. 简述一下Java面向对象的基本特征&#xff08;四个&#xff09;&#xff0c;以及你自己的应用&#xff1f; 抽象&#…...

18. 四数之和 - 力扣

1. 题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1a; 0 …...

[vue2]深入理解路由

本节目标 单页应用程序路由概念VueRouter基本使用组件分类存放路由模块封装声明式导航其他路由配置路由模式编程式导航案例-面经基础版 单页应用程序 单页应用程序(SPA): 所有的功能都在一个HTML页面上实现 网易云音乐: 网易云音乐 多页应用程序(MPA): 不同功能通过切换不同…...

搜维尔科技:SenseGlove为什么不同的手套尺寸对触觉技术至关重要

senseglove适当的尺寸可确保: 1.精确的运动跟踪:合适的手套保持部件稳定&#xff0c;防止不准确的运动跟踪 2.有效的力反馈:我们基于肌腱的力反馈系统通过对手套的绳子施加力来模拟肌肉的运动。不稳定的配合会影响反馈&#xff0c;使其感觉虚弱和柔软。 3.舒适性和敏感性:我…...

java算法:选择排序

文章标题 概述与基本实现优缺点尝试优化 概述与基本实现 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的基本思想是每次从待排序的元素中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;放置在已排序的部分的末尾&#xff0c;直到…...

helm升级部署时出现升级挂起状态处理

问题 在使用helm 升级命令时&#xff0c;升级命令如下&#xff1a; helm upgrade -i -f ./values-prod.yaml myapp ./ -n myns --create-namespace中途因为网络原因&#xff0c;再次运行上面升级命令时出现&#xff0c;如下错误&#xff1a; Error: UPGRADE FAILED: another …...

16、架构-可观测性-事件日志详细解析

事件日志 事件日志是记录系统运行期间发生的离散事件的关键工具。它们在系统的可观测性中起着至关重要的作用&#xff0c;帮助开发者和运维人员追踪、分析和解决系统问题。以下是对事件日志处理各个方面的详细解析&#xff0c;并结合具体的数据案例和技术支撑。 输出 日志输出…...

Java数据结构与算法(买卖股票的最佳时机二贪心算法)

前言 买卖股票最佳时机二&#xff0c;此时不限次数的买卖的要求获得的利益最大化。暴力算法依旧可行&#xff0c;可以参考之前的练习。 . - 力扣&#xff08;LeetCode&#xff09; 贪心算法原理参考:Java数据结构与算法(盛水的容器贪心算法)-CSDN博客 实现原理 1.定义最大…...

t265 坑

Streaming T265 video over USB 2.1 is unreliable, please use USB 3 or only stream poses 试着用windows 打开也是默认是USB2打开&#xff0c; 英伟达orin nx jetpack 也一样 不知道为啥。并且一旦打开飞控 microxrceagent &#xff0c; t265 的位置就飞。 配置ros2 的lau…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...