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

在这里插入图片描述

😄 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.mzph.cn/news/594186.shtml

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

相关文章

docker 安装可视化工具 Portainer 以及 汉化

安装portainer是最新版本,汉化指定版本2.9.1 。如果要安装汉化版,可直接跳转步骤四 一、拉去镜像 安装网址:Install Portainer BE with Docker on Linux - Portainer Documentation docker pull portainer/portainer二、根据portainer镜像创建…

常用rtmp、m3u8、flv、mp4直播流在线测试地址

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&#x1f…

CMake入门教程【基础篇】CMake+Linux gcc构建C++项目

文章目录 1.概述2.GCC与CMake介绍3.安装CMake和GCC4.代码示例 1.概述 在Linux环境下,使用CMake结合GCC(GNU Compiler Collection)进行项目构建是一种常见且高效的方法。CMake作为一个跨平台的构建系统,可以生成适用于不同编译器的…

基于SSM的网络游戏交易平台设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

湖南大学-算法设计与分析-2023期末考试【原题】

前言 21:00刚刚结束的考试,凭着回忆把题目重现出来了,在复习的时候根本找不到往年的试卷,希望这张回忆的试卷能帮助到下一届的同学。知道题目基本上就能做出来了,但是不知道是真的做不出来,我就不给答案了…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 敏捷开发(Agile Development) 详细介绍: 优缺点: 优点&#xf…

【Mybatis】深入学习MyBatis:高级特性与Spring整合

🍎个人博客:个人主页 🏆个人专栏: Mybatis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 高级特性 1 一级缓存和二级缓存 一级缓存 二级缓存 2 延迟加载 5 整合Spring 1 MyBatis-Spring模块 2 事务管理 结…

pytest conftest定义一个fixtrue获取测试环境地址

方便全局切换地址 pytest.fixture() def config():data {测试环境: {A环境: 127.0.0.1,B环境: 127.0.0.2,C环境: 127.0.0.3,D环境: 127.0.0.4},}return data.get(测试环境, {}).get(A环境)import pytestdef test_case001(config):url http://str(config):8080/api/user/logi…

(2023|AABI,多模态信息瓶颈,变分近似,视觉语言模型可解释性)通过多模态信息瓶颈归因对图像文本表示的视觉解释

Visual Explanations of Image-Text Representations via Multi-Modal Information Bottleneck Attribution 公和众和号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 3. 通过多模态…

Leetcode11-快乐数(202)

1、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1…

8K自动化测试面试题分享(有答案,非常详细)

关于自动化测试面试,会问到哪些问题呢?给大家简单总结了一下,每一个都是学员反馈过来的企业真题,相信对大家有帮助,最近有面试机会的,快来背一下答案吧 1、你会封装自动化测试框架吗? 这个问得…

华为月薪25K的自动化测试工程师到底要会那些技能!

​前言 3年自动化测试软件测试工程师职业生涯中,我所经历过的项目都是以自动化测试为主的。由于自动化测试是一个广泛的领域,我将自己的经验整理了一下分享给大家,话不多说,直接上干货。 自动化测试的目标和实践选择合适的自动化…

【Linux Shell】2. Shell 变量

文章目录 【 1. 变量命名规则 】【 2. 变量的使用 】【 3. 只读变量 】【 4. 删除变量 】【 5. 变量类型 】【 6. Shell 字符串 】6.1 字符串的分类6.2 字符串操作 【 7. Shell 数组 】7.1 定义数组7.2 读取数组7.3 获取数组的长度 【 8. Shell 注释 】8.1 单行注释8.2 多行注释…

Hi5 2.0 虚拟手与追踪器(Tracker)的位置修正

问题描述 使用环境与工具:Unity 2022.3.4fc1,steam VR(2.7.3),steamvrSDK(1.14.15),HTC vive pro专业版,Hi5 2.0数据手套 首先按照Hi5 2.0的使用说明(可参考:HI5 2.0 交…

Netty使用SSL实现双向通信加密

最近项目有个需求,TCP服务器实现基于证书通信加密,之前没做过,花了一些时间调研,今天整理下。 SSL(Secure Sockets Layer 安全套接字协议) 1、原理 算法原理 简而言之就是非对称加密算法 私钥自己持有,公钥发给对方,对方在发送信息的时候使用公钥进行加密数据,当接收到…

IPA打包过程中的Invalid Bundle Structure错误如果解决

在iOS应用程序开发中,打包和发布应用程序是一个必要的步骤。有的时候在打包的过程中可能会遇到一些错误,其中一个比较常见的错误是"Invalid Bundle Structure"。这个错误通常意味着应用程序的文件结构不正确,而导致的无法成功打包应…

【NLP】2024年改变人工智能的前六大NLP语言模型

在快速发展的人工智能领域,自然语言处理已成为研究人员和开发人员关注的焦点。作为这一领域显著进步的证明,近年来出现了几种开创性的语言模型,突破了机器能够理解和生成的界限。在本文中,我们将深入研究大规模语言模型的最新进展…

简单Diff算法

简单Diff算法 渲染器的核心 Diff算法 解决的问题 比较新旧虚拟节点的子节点,实现最小化更新。 虚拟节点key属性的作用 就像虚拟节点的“身份证号”,在更新时,渲染器会通过key属性找到可复用的节点,然后尽可能地通过DOM移动操…

GraalVM Native学习及使用

概述 在开发Spring Boot 应用或者其他JAVA程序的过程中,启动慢、内存占用大是比较头疼的问题,往往需要更多的资源去部署,成本大幅提高。为了优化上述问题,常常使用优化程序、使用更小消耗的JVM、使用容器等措施。 现在有一个叫做…

一起读《奔跑吧Linux内核(第2版)卷1:基础架构》- 大小端字节序

关注 点赞 不错过精彩内容 大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! Hello,大家好我是硬核王同学,是一名刚刚工作一年多的Linux工程师&#xff0…