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中常用的日志主要有如下几种: 这些日志通常情况下都是关闭的&a…...
XML 编辑器:功能、选择与使用技巧
XML 编辑器:功能、选择与使用技巧 简介 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。由于其灵活性和广泛的应用,XML编辑器成为开发者、数据管理者和内容创作者的重要工具。本文将探讨XML编辑器的功能、选择标准以及…...
单例模式(设计模式)
文章目录 概述1. 饿汉式(hungry Initialization)2. 懒汉式(Lazy Initialization)3.双重检查锁定(Double-Checked Locking)4. 静态内部类(Static Inner Class)5. 枚举(Enu…...

提升你的编程体验:自定义 PyCharm 背景图片
首先,打开 PyCharm 的设置菜单,点击菜单栏中的 File > Settings 来访问设置,也可以通过快捷键 CtrlAItS 打开设置。 然后点击Appearance & Behavior > Appearance。 找到Background image...左键双击进入。 Image:传入自己需要设置…...
SpringCloud与Dubbo区别?
相同点: dubbo与springcloud都可以实现RPC远程调用。 dubbo与springcloud都可以使用分布式、微服务场景下。 区别: dubbo有比较强的背景,在国内有一定影响力。 dubbo使用zk或redis作为作为注册中心 springcloud使用eureka作为注册中心 dubbo支持多种协议,默认使用…...

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

长亭培训加复习安全产品类别
下面这个很重要参加hw时要问你用的安全产品就有这个 检测类型产品 偏审计 安全防御类型 EDR类似于杀毒软件 安全评估 任何东西都要经过这个机械勘察才能上线 安全管理平台 比较杂 比较集成 审计 漏扫 评估 合在这一个平台 也有可能只是管理 主机理解为一个电脑 安了终端插件…...
memcached介绍和详解
Memcached 是一种高性能、分布式内存缓存系统,常用于加速动态 web 应用程序的性能,通过缓存数据库查询结果、对象等数据,减少对数据库的访问压力,从而提高响应速度和系统吞吐量。 ### Memcached 的特点和工作原理 #### 特点 1. …...
Spring boot 注解实现幂等性
1. 添加 Spring AOP 依赖 在 pom.xml 中添加如下依赖: <dependencies><!-- Spring AOP dependency --><dependency><groupIdorg.springframework.boot</groupId><artifactIdspring-boot-starter-aop</artifactId></depend…...

NVIDIA Jetson AI边缘计算盒子
这里写自定义目录标题 烧录系统安装Jetpack安装cuda安装Pytorch安装onnxruntime安装qv4l2 烧录系统 选择一台Linux系统,或者VMware的电脑作为主机,烧录系统和后面安装Jetpack都会用到。 根据供应商的指令烧录的,暂时还没验证官方烧录&#x…...
React核心概念、主要特点及组件的生命周期
在前端开发的世界中,React以其独特的魅力和强大的功能,成为了构建用户界面的首选框架之一。本文将深入探讨React的核心概念、主要特点以及组件生命周期 React简介 React是由Facebook开发并开源的前端JavaScript库,专门用于构建可重用的UI组…...

Java基础面试重点-1
0. 符号: *:记忆模糊,验证后特别标注的知识点。 &:容易忘记知识点。 *:重要的知识点。 1. 简述一下Java面向对象的基本特征(四个),以及你自己的应用? 抽象&#…...

18. 四数之和 - 力扣
1. 题目 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 …...

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

搜维尔科技:SenseGlove为什么不同的手套尺寸对触觉技术至关重要
senseglove适当的尺寸可确保: 1.精确的运动跟踪:合适的手套保持部件稳定,防止不准确的运动跟踪 2.有效的力反馈:我们基于肌腱的力反馈系统通过对手套的绳子施加力来模拟肌肉的运动。不稳定的配合会影响反馈,使其感觉虚弱和柔软。 3.舒适性和敏感性:我…...
java算法:选择排序
文章标题 概述与基本实现优缺点尝试优化 概述与基本实现 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从待排序的元素中选择最小(或最大)的元素,放置在已排序的部分的末尾,直到…...

helm升级部署时出现升级挂起状态处理
问题 在使用helm 升级命令时,升级命令如下: helm upgrade -i -f ./values-prod.yaml myapp ./ -n myns --create-namespace中途因为网络原因,再次运行上面升级命令时出现,如下错误: Error: UPGRADE FAILED: another …...
16、架构-可观测性-事件日志详细解析
事件日志 事件日志是记录系统运行期间发生的离散事件的关键工具。它们在系统的可观测性中起着至关重要的作用,帮助开发者和运维人员追踪、分析和解决系统问题。以下是对事件日志处理各个方面的详细解析,并结合具体的数据案例和技术支撑。 输出 日志输出…...
Java数据结构与算法(买卖股票的最佳时机二贪心算法)
前言 买卖股票最佳时机二,此时不限次数的买卖的要求获得的利益最大化。暴力算法依旧可行,可以参考之前的练习。 . - 力扣(LeetCode) 贪心算法原理参考:Java数据结构与算法(盛水的容器贪心算法)-CSDN博客 实现原理 1.定义最大…...
t265 坑
Streaming T265 video over USB 2.1 is unreliable, please use USB 3 or only stream poses 试着用windows 打开也是默认是USB2打开, 英伟达orin nx jetpack 也一样 不知道为啥。并且一旦打开飞控 microxrceagent , t265 的位置就飞。 配置ros2 的lau…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...