MySQL中的六种日志你都懂么?不懂!那就必须看看

news2024/11/16 3:40:14

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

MySQL中的六种日志

  • 概述
  • MySQL中的六种日志
    • 二进制日志(Binary Log)
    • 错误日志(Error Log)
    • 查询日志(General Log)
    • 慢查询日志(Slow Query Log)
    • 重做日志(Redo Log)
    • 回滚日志(Undo Log)
  • 结语

概述

MySQL日志记录了数据库系统的各种活动,提供了关于数据库状态、性能、错误和事务等方面的重要信息,MySQL日志对于监视、维护和优化MySQL数据库非常重要。通过仔细分析这些日志,管理员可以及时发现问题、进行故障排除,并改进数据库性能。在生产环境中,合理配置和管理这些日志是数据库管理的重要一环

MySQL中的六种日志

二进制日志(Binary Log)

作用: 记录数据库中发生的所有更改,包括对数据和结构的修改。
用途:用于数据恢复、主从复制(replication)和点播(point-in-time)恢复。
文件名:通常以binlog为前缀,加上一系列数字和后缀表示。

错误日志(Error Log)

作用: 记录MySQL服务器在运行时发生的错误和警告。
用途: 用于诊断和解决问题。
文件名: 默认为hostname.err,存储在MySQL数据目录下。

查询日志(General Log)

作用: 记录所有对MySQL服务器的查询请求。
用途: 主要用于调试和性能分析。
文件名:默认为hostname.log,存储在MySQL数据目录下。
注意: 在生产环境中启用一般查询日志可能会影响性能,因为它记录所有查询。

慢查询日志(Slow Query Log)

作用: 记录执行时间超过阈值的查询语句。
用途: 用于分析慢查询,优化数据库性能。
文件名: 默认为hostname-slow.log,存储在MySQL数据目录下。

重做日志(Redo Log)

作用: 记录InnoDB存储引擎的事务日志,包括事务的提交和回滚信息。
用途: 用于实现事务的持久性和崩溃恢复。
文件名:默认为ib_logfile0和ib_logfile1,存储在MySQL数据目录下。

回滚日志(Undo Log)

作用: 记录事务执行过程中的旧版本数据,用于提供事务的隔离级别和回滚操作。
存储引擎: 主要由InnoDB存储引擎使用。
文件名:与重做日志文件相同。

二进制日志(Binary Log)

MySQL的二进制日志(Binary Log)是一种记录数据库中发生更改的日志。它包含了对数据和数据库结构的所有更改,例如插入、更新、删除等。二进制日志对于数据库备份、主从复制、点播恢复以及数据迁移等方面都具有重要作用。

作用:

记录对数据库的所有更改,以二进制的形式记录。
用于数据恢复、主从复制和点播(point-in-time)恢复。

文件格式:

二进制日志以二进制格式进行存储,不可读。
文件通常以binlog为前缀,加上一系列数字和后缀(例如,binlog.000001)表示。

启用和禁用:

二进制日志的启用和禁用可以通过MySQL配置文件或者动态SQL命令进行管理。
通过配置文件的my.cnf中的log_bin选项,可以启用或禁用二进制日志。

日志事件:

二进制日志以日志事件(Log Event)的形式记录。
日志事件包括语句事件(记录SQL语句的执行)和行事件(记录每行数据的变更情况)等。

日志位置(Log Position):

日志位置是二进制日志文件中的一个特定位置,用于标识日志中的某个点。
在主从复制中,从库通过日志位置来确定复制的进度。

持久性:

二进制日志是持久性的,它会记录数据库的所有更改,即使MySQL服务器关闭后,也可以通过二进制日志进行数据恢复。

轮换和清理:

二进制日志会定期轮换,产生新的日志文件,以便更好地管理和维护。
可以通过expire_logs_days选项来配置过期时间,清理旧的二进制日志。

安全性考虑:

由于二进制日志包含数据库中的所有更改,需要确保它受到安全保护,防止未经授权的访问。

查看是否开启binlog日志命令

show VARIABLES like '%log_bin%'

开启binlog的方式如下:

如果有关注过博主的小伙伴应该看过了博主之前Docker教程,数据库主从复制就开启过binlog
参考文章地址:https://blog.csdn.net/lhmyy521125/article/details/131288382

log-bin=mysql-bin
server-id=1
binlog_format=ROW

其中log-bin指定日志文件的名称,通过以下命令查看

show VARIABLES like '%datadir%'

错误日志(Error Log)

MySQL错误日志(Error Log)是记录MySQL服务器运行期间出现的错误和警告信息的重要日志。该日志对于诊断和解决问题,以及监控数据库服务器的健康状态至关重要。以下是关于MySQL错误日志的一些关键信息:

在MySQL配置文件中的my.cnf中,可以使用log_error选项来指定错误日志文件的路径

log_error = /path/to/error.log

动态SQL命令可以通过SET GLOBAL log_error = ‘file_path’;进行配置

查询日志(General Log)

一般查询日志(General Query Log)是MySQL中的一种日志类型,用于记录所有被MySQL服务器执行的查询语句,包括执行时间较短的语句。这个日志对于分析数据库的工作负载、诊断问题、以及在开发和调试阶段进行查询优化都是非常有用的。

示例:在MySQL命令行中启用一般查询日志

-- 启用一般查询日志
SET GLOBAL general_log = 1;

-- 执行一些查询操作

-- 禁用一般查询日志
SET GLOBAL general_log = 0;

查看是否开启查询日志

show variables like '%general_log%';

慢查询日志(Slow Query Log)

慢查询日志(Slow Query Log)是MySQL中一种记录执行时间超过一定阈值的查询语句的日志。它对于诊断数据库性能问题、分析慢查询、以及进行性能优化非常有用

慢查询配置参考

# 通过配置文件
slow_query_log = 1  # 启用
long_query_time = 2 # 设置阈值
slow_query_log = 0  # 禁用

# 通过动态SQL
-- 启用慢查询日志
SET GLOBAL slow_query_log = 1;

-- 设置慢查询阈值为2秒
SET GLOBAL long_query_time = 2;

-- 执行一些查询操作

-- 禁用慢查询日志
SET GLOBAL slow_query_log = 0;

重做日志(Redo Log)

在MySQL中,重做日志(Redo Log)是InnoDB存储引擎用于确保事务的持久性和数据库的恢复性的一种重要机制。重做日志记录了对数据库进行的物理更改,以便在系统崩溃或异常情况下进行恢复。

作用一

用于确保事务的持久性。在事务提交时,相关的物理更改首先被记录到重做日志中,然后再写入磁盘上的数据文件。

作用二

在系统崩溃或异常恢复时,通过重做日志可以重新应用已提交的事务,确保数据库的一致性。

回滚日志(Undo Log)

在MySQL中,回滚日志(Undo Log)是InnoDB存储引擎用于实现事务的隔离级别和提供回滚能力的一种机制。回滚日志记录了事务执行过程中对数据页的旧版本所做的修改,以便在需要回滚事务时恢复到之前的状态

以下是有关MySQL回滚日志的一些总结:

作用:

用于提供事务的隔离级别,确保多个事务之间的隔离性。
记录事务执行过程中对数据页的旧版本所做的修改,以便在需要回滚事务时恢复到之前的状态。

存储引擎

回滚日志主要由InnoDB存储引擎使用。其他存储引擎(如MyISAM)不使用回滚日志,因为它们不支持事务。

文件名:

默认情况下,回滚日志的文件名与重做日志相同,通常是 ib_logfile0 和 ib_logfile1。
回滚日志和重做日志在InnoDB中共享这些文件。

日志格式:

回滚日志以一种二进制格式记录。它记录了对数据页的修改,使得在事务回滚时可以撤销或者恢复之前的状态。

事务隔离级别:

回滚日志的存在使得InnoDB能够实现不同的事务隔离级别,包括读未提交、读提交、可重复读和串行化。

MVCC(多版本并发控制):

回滚日志是MVCC机制的一部分,允许事务并发执行,每个事务在执行时都可以看到自己修改的数据,而不受其他事务的干扰。

回滚段(Rollback Segment):

InnoDB使用回滚段来管理回滚日志。每个事务都有自己的回滚段,用于存储事务执行过程中的旧版本数据。

清理和回收:

InnoDB定期清理不再需要的回滚日志,以释放空间。这个过程通常称为回滚段的回收。

结语

本章主要介绍了MySQL中的六种日志,这些日志在MySQL中扮演着不同的角色,用于提供数据的持久性、数据库恢复、性能分析以及故障排除等方面。了解这些日志的作用和适当配置对于数据库管理是非常重要的。

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

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

相关文章

Linux 进程(七) 进程地址空间

虚拟地址/线性地址 学习c语言的时候我们经常会用到 “&” 符号,以及下面这张表,那么取出来的地址是否对应的是真实的物理地址呢?下面我们来写代码一步一步的验证。 从上面这张图不难看出,从正文代码,到命令行参数环…

当你明白了这句话,你就开始赚到钱了

哈喽,大家好啊,我是雷工! 曾经看到稻盛和夫说过这么一句话: 其实钱并不是赚来的,而是你帮助别人解决问题后给你的回报。 这天发生了件小事,让我对这句话有了更深的认识。 一、 缘起 自从开始记笔记&…

洗地机有没有必要买?家用洗地机推荐

随着生活水平的提高,人们对家居环境的卫生和清洁要求也相应提高,因此家用洗地机作为一种现代化的清洁工具逐渐受到了广泛关注和青睐。那么,洗地机到底有没有必要买? 洗地机对于一些家庭确实是非常有必要的,特别是对于工作繁忙、…

springboot整合webservice使用总结

因为做的项目中用到了webservice,所以在此总结一下。 一、webservice简介 Web Service也叫XML Web Service, WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使…

YOLOv7独家原创改进:提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好 | 2023.12.29收录

💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 收录YOLOv7原创自研 https://blog.csdn…

【损失函数】Quantile Loss 分位数损失

1、介绍 Quantile Loss(分位数损失)是用于回归问题的一种损失函数,它允许我们对不同分位数的预测误差赋予不同的权重。这对于处理不同置信水平的预测非常有用,例如在风险管理等领域。 当我们需要对区间预测而不单是点预测时 分位…

由于找不到kernel32.dll无法继续执行此代码的解决方法

使用Windows 7操作系统,我一直被一个名为“kernel32.dll”的问题所困扰。kernel32.dll是Windows操作系统中非常重要的一个动态链接库文件,它包含了许多基本的系统函数,如内存管理、文件操作等。因此,当这个文件丢失或损坏时&#…

GPT科研助手!论文助手!编程助手!AIGC/机器学习/深度学习/卷积神经网络/地球科学/AI绘图等模块

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

【双指针算法】-- 左右指针

左右指针 前言一、双指针算法二、左右指针1.用于在已排序数组中找到两个数使其和为特定值2.在字符串中判断是否为回文 总结 前言 今天在刷Leetcode的时候觉得自己双指针掌握的还是不错的记录一下,写个学习笔记,也方便以后翻阅,如果也帮助到你了,那真是太好啦! 本篇介绍的是左右…

[DevOps-05] Jenkins实现CI/CD操作

一、简要说明 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 二、准备Springboot工程 1、IDEA新建工程 2、填写项目工程信息 3、选择Springboot版本…

Dubbo开发系列

一、概述 以上是 Dubbo 的工作原理图,从抽象架构上分为两层:服务治理抽象控制面 和 Dubbo 数据面 。 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中…

模型训练不再数据顾虑,微软研究团队使用【合成数据】来训练模型

微软研究团队最新成果:他们已经开始使用【合成数据】来训练AI模型了。微软使用大语言模型生成了近100种语言、数十万个文本嵌入任务的“模拟”文本数据,然后用这些数据来训练 AI 。这大幅度降低了训练成本,提高了效率,同时还减少了…

VirtualBox + Redhat7.6 +Oracle19C 数据库安装

软件工具: 虚拟化工具:VirtualBox-6.1.26-145957-Win.exe操作系统镜像:rhel-server-7.6-x86_64-dvd.iso远程连接工具:XmanagerPowerSuite-7.0.0004r.exe、SecureCRT 8.5.3数据库版本镜像:LINUX.X64_193000_grid_home.…

《深入理解C++11:C++11新特性解析与应用》笔记六

第六章 提高性能及操作硬件的能力 6.1 常量表达式 6.1.1 运行时常量性与编译时常量性 大多数情况下,const描述的是运行时常量性,也即是运行时数据的不可更改性。但有时候我们需要的却是编译时的常量性,这是const关键字无法保证的。例如&am…

【JavaSE】string与StringBuilder和StringBuffer

区别: 不可变性: String: String 类是不可变的,一旦创建就不能被修改。对字符串的任何操作都会创建一个新的字符串对象。StringBuffer: StringBuffer 是可变的,允许对字符串进行修改,而不创建新…

vue3中如何使用vuex

最近想出一版如何在vue3中使用vuex 首先,在这里回答一个粉丝的问题,为什么有local storage 和session storage还要使用vuex,这里我解释一下,我们要明白浏览器的存储和vuex的存储的不同点,首先,浏览器存在本…

【前端】AJAX(学习笔记)

一、AJAX基础 1、 AJAX 有什么用 浏览器和服务器之间通信&#xff0c;动态数据交互 2、axios库的使用 引入axios库 <script src"https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.js"></script>使用axios函数 axios({url: http://hmajax.ithei…

nginx在国产服务器上stream配置项无法识别的问题

最近在搭建k8sranchar&#xff0c;需要用到nginx做负载均衡&#xff0c;之前在系统中也会用到&#xff0c;之前一直使用http选项&#xff0c;做转发配置。 基本格式如下图所示&#xff1a; 但是在ranchar的安装中默认方式使用stream配置项。 使用yum默认安装的nginx不支持该关…

.babky勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 网络安全威胁不断进化&#xff0c;其中.babky勒索病毒引起了广泛关注。这篇文章91数据恢复将深入介绍.babky的狡猾特征&#xff0c;以及在遭受其袭击时如何高效地恢复被加密的数据&#xff0c;并提供实用的预防方法。当面对被勒索病毒攻击导致的数据文件加密…

类的加载机制、主动引用、被动引用、什么是类加载器、类加载器的分类、自定义类的加载器

类的加载机制、类加载器 类的加载时机主动引用被动引用 类加载器什么是类加载器类的加载器分类什么情况下需要自定义类的加载器 类的加载时机 主动引用 虚拟机规范中并没有强制约束何时进行加载&#xff0c;但是规范严格规定了只有下列六种情况必须对类进行加载: 当遇到new.…