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中扮演着不同的角色,用于提供数据的持久性、数据库恢复、性能分析以及故障排除等方面。了解这些日志的作用和适当配置对于数据库管理是非常重要的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】深度解剖环境变量

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟悉并掌握Linux的环境变量。 > 毒鸡汤&#x…

基于SSM的滁艺咖啡在线销售系统设计与实现

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

基于果蝇算法优化的Elman神经网络数据预测 - 附代码

基于果蝇算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于果蝇算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于果蝇优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要:针…

CSS 中间位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-center: isAnimating }"><!-- 元素内容 -->…

Unity之ShaderGraph如何实现瓶装水效果

前言 有一个场景在做效果时,有一个水瓶放到桌子上的设定,但是模型只做了个水瓶,里面是空的,所以我就想办法,如何做出来瓶中液体的效果,最好是能跟随瓶子有液体流动的效果。 如下图所示: 水面实现 水面效果 液体颜色设置 因为液体有边缘颜色和内里面颜色,所以要分开…

【vue】Easy Player实现视频播放:

文章目录 一、效果&#xff1a;二、文档&#xff1a;三、实现&#xff1a;【1】安装插件&#xff1a;【2】引入js文件&#xff1a;【3】使用&#xff1a; 四、方法&#xff1a; 一、效果&#xff1a; 二、文档&#xff1a; GitCode - EasyPlayer.js npm-easydarwin/easyplayer…

FairGuard游戏加固产品常见问题解答

针对日常对接中&#xff0c;各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注&#xff0c;我们梳理了相关问题与解答&#xff0c;希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A&#xff1a;FairGuar…

贝叶斯推断:细谈贝叶斯变分和贝叶斯网络

1. 贝叶斯推断 统计推断这件事大家并不陌生&#xff0c;如果有一些采样数据&#xff0c;我们就可以去建立模型&#xff0c;建立模型之后&#xff0c;我们通过对这个模型的分析会得到一些结论&#xff0c;不管我们得到的结论是什么样的结论&#xff0c;我们都可以称之为是某种推…

Linux 485驱动通信异常

背景 前段时间接到一个项目&#xff0c;要求用主控用485和MCU通信。将代码调试好之后&#xff0c;验证没问题就发给测试了。测试测的也没问题。 但是&#xff0c;到设备量产时&#xff0c;发现有几台设备功能异常。将设备拿回来排查&#xff0c;发现是485通信有问题&#xff…

电脑提示找不到msvcp140.dll的修复方法,亲测有效的两种方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件&#xff0c;它包含了许多C运行时库文件。这些库文件为运行基于C编写的应用程序提供了必要的支持。当系统中缺少某个或某些库文件时&#xff0c;就可能出现msvcp140.dll丢失的错误。 一、以下是msvcp140.dll文…

qt .pro工程转vs工程

1. 新建vs空项目或者Qt Console Application&#xff1b; 2. 扩展 -》Qt VS Tools -》Open Qt Project (.pro) 打开对应的pro文件即可将.pro工程转成vs工程&#xff1b; 注意&#xff1a; &#xff08;1&#xff09;转成的vs工程在pro文件同级目录下&#xff0c;双击打开vcx…

23年中科院1区算法|开普勒优化算法原理及其利用(Matlab/Python)

CEC2017中的测试 本文作者将介绍一个2023年发表在中科院1区期刊《Knowledge -Based Systems》上的优化算法——开普勒优化算法(Kepler optimization algorithm&#xff0c;KOA)[1] 算法性能上&#xff0c;与鹈鹕、黏菌、灰狼和鲸鱼等一众优化算法在CEC2014、CEC2017、CEC2020和…

论文阅读--EFFICIENT OFFLINE POLICY OPTIMIZATION WITH A LEARNED MODEL

作者&#xff1a;Zichen Liu, Siyi Li, Wee Sun Lee, Shuicheng YAN, Zhongwen Xu 论文链接&#xff1a;Efficient Offline Policy Optimization with a Learned Model | OpenReview 发表时间&#xff1a; ICLR 2023年1月21日 代码链接&#xff1a;https://github.com/s…

AES加密数据:Python加密Java解密

总体步骤&#xff0c;分2步&#xff1a; 1.Python加密存入数据库 1.1 AES加密&#xff0c;CBC模式 1.2 秘钥Key 和 向量异或 IV 1.3数据加盐PKCS5Padding 1.4 Base64转码 2.Java解密API传前端展示 代码示例&#xff1a; 1.Python加密存入数据库 needAESText "需要…

使用 AnyGo 修改 iPhone 手机定位

在当今数字化时代&#xff0c;我们的手机已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;有时我们可能会遇到一些情况&#xff0c;需要修改手机的定位信息。这个需求可能来自于各种不同的原因&#xff0c;包括但不限于保护个人隐私、测试应用程序的地理位置相关功能…

源头厂家定制直线度测量仪 在线与离线检测均可

直线度的检测不再局限于直尺法、重力法等人工检测方式&#xff0c;随着自动化的发展&#xff0c;直线度检测也更需要自动化方便快捷的检测仪器。为此&#xff0c;研发了在线直线度测量仪与离线直线度测量仪&#xff0c;根据不同的需要&#xff0c;选择合适的设备即可。 数据计…

学习Vue单文件组件总结

今天主要学习了组件实例对象的一个重要内置关系和单文件组件。先说一下实例对象的内置关系&#xff0c;在这里要对JS中的原型链有一定的基础&#xff0c;Vue构造函数的prototype原型指向的是Vue的原型对象&#xff0c;new出来的Vue实例对__proto__同样指向的是Vue的原型对象&am…

diffusers 源码待理解之处

一、训练DreamBooth时&#xff0c;相关代码的细节小计 ** class_labels timesteps 时&#xff0c;模型的前向传播怎么走&#xff1f;待深入去看 ** 利用class_prompt去生成数据&#xff0c;而不是instance_prompt class DreamBoothDataset(Dataset):"""A dat…

python+selenium操作下拉框

以该网站为例&#xff1a;https://www.17sucai.com/pins/demo-show?id5926 该网页下存在多个可供测试的下拉框。 基本脚手架代码&#xff1a; 1 2 3 4 5 6 7 8 9 10 from selenium.webdriver.support.ui import Select from selenium import webdriver import time driver …

解析一次get请求后台解码中文乱码的问题

今日遇到一个项目组中个人独有的bug&#xff0c;系统输入中文搜索内容搜不出来&#xff0c;组员都可以&#xff0c;从前台查到后台&#xff0c;发现前端的获取值和传递值都没什么问题&#xff0c;到了后台&#xff0c;接收的中文参数直接是个乱码&#xff0c;但是想到之前也有传…