MySQL六大日志的功能介绍。
前言
首先,MySQL的日志应该包括二进制日志(Binary Log)、错误日志(Error Log)、查询日志(General Query Log)、慢查询日志(Slow Query Log)、重做日志(Redo Log)和回滚日志(Undo Log)。不过我不确定是否这六个是正确的,或者有没有遗漏或者不同的分类方式。
-
二进制日志(Binary Log):这个我记得是用来记录所有对数据库的更改操作的,比如INSERT、UPDATE、DELETE等,主要用于主从复制(Replication)和某些数据恢复场景。二进制日志是逻辑日志,记录的是SQL语句或者行的变更。不过具体细节可能要看不同的格式设置,比如statement、row或者mixed模式。
-
错误日志(Error Log):这个应该记录MySQL运行过程中出现的错误信息,比如启动、关闭过程中的问题,或者运行时的严重错误。比如当MySQL无法启动时,查看错误日志就能找到原因。
-
查询日志(General Query Log):这个日志会记录所有的客户端连接和执行的SQL语句,不管是SELECT还是其他操作。不过开启这个日志可能会对性能有影响,因为所有查询都会被记录,所以在生产环境中可能不会一直开启。
-
慢查询日志(Slow Query Log):这个记录执行时间超过设定阈值的查询,以及可能没有使用索引的查询。这个日志对优化数据库性能很有帮助,可以通过分析慢查询日志找到需要优化的SQL语句。
-
重做日志(Redo Log):这个是InnoDB存储引擎特有的日志,用于事务的持久性。当发生系统崩溃时,可以通过重做日志来恢复未写入数据文件的事务操作。重做日志是物理日志,记录的是数据页的修改。
-
回滚日志(Undo Log):同样属于InnoDB,用于事务的回滚和MVCC(多版本并发控制)。当事务需要回滚时,Undo Log可以恢复到事务开始前的状态。同时,在MVCC中,其他事务可能需要读取旧版本的数据,这时Undo Log提供了所需的历史版本。
-
二进制日志:记录所有数据变更操作,用于主从复制和数据恢复。可以用于时间点恢复(PITR),将数据库恢复到某个特定时间点的状态。此外,二进制日志还支持多种格式,比如基于语句(statement)、基于行(row)或者混合模式(mixed)。
-
错误日志:记录MySQL服务启动、运行、停止时的错误信息,警告信息,或者其他诊断信息。比如,当数据库无法启动时,查看错误日志可以找到具体的错误原因,如配置错误、端口被占用等。
-
查询日志:记录所有连接到MySQL服务器的客户端请求和执行的SQL语句。这个日志对于审计和调试非常有用,但因为记录所有操作,可能会占用大量磁盘空间,影响性能,所以通常只在需要调试的时候开启。
-
慢查询日志:记录执行时间超过long_query_time参数设置的阈值,或者没有使用索引的查询语句。帮助DBA优化数据库性能,通过分析这些慢查询,可以找出需要优化的SQL语句或者索引缺失的情况。
-
重做日志(Redo Log):InnoDB引擎使用,保证事务的持久性。在事务提交时,先将变更写入重做日志,然后再慢慢刷新到磁盘的数据文件中。当系统崩溃时,通过重做日志可以恢复那些已经提交但尚未写入数据文件的事务,确保数据不丢失。重做日志是循环写入的,有固定的大小。
-
回滚日志(Undo Log):同样由InnoDB引擎管理,用于事务回滚和MVCC。当事务需要回滚时,利用Undo Log中的信息撤销已经执行的操作。此外,在并发事务中,当其他事务需要读取数据的历史版本时,Undo Log提供旧版本的数据,从而实现一致性读。
不过,有没有可能混淆了重做日志和二进制日志?比如,二进制日志是服务器层的,而重做日志是存储引擎层的。它们的用途不同,二进制日志用于复制和恢复,而重做日志用于崩溃恢复。
另外,事务的ACID特性中,持久性(Durability)是通过重做日志来保证的,原子性(Atomicity)是通过回滚日志实现的。隔离性(Isolation)则通过锁和MVCC来实现,其中MVCC又依赖Undo Log,通常情况下,日志之间是相互作用的,以保证数据库的并发数据的可靠性问题。
所以,这六大日志各自在数据库的不同方面发挥作用,比如数据恢复、性能优化、错误诊断、事务处理等。理解每个日志的作用,有助于在运维和开发过程中更好地利用这些日志解决问题。
MySQL的六大日志在数据库的运行、维护和优化中扮演着关键角色。以下是它们的详细功能介绍:
1. 二进制日志(Binary Log)
- 功能:
- 主从复制:记录所有对数据库的更改操作(如INSERT、UPDATE、DELETE),从库通过重放这些操作实现数据同步。
- 数据恢复:支持时间点恢复(PITR),可将数据库恢复到特定时间点的状态。
- 审计:追踪数据变更历史,用于安全审计。
- 日志格式:
- Statement-Based:记录SQL语句(节省空间,但可能因函数调用导致主从不一致)。
- Row-Based:记录行级别的变更(安全,但日志量大)。
- Mixed:混合模式,自动选择最优方式。
- 配置参数:
[mysqld] log_bin = /var/lib/mysql/mysql-bin # 启用二进制日志 binlog_format = ROW # 设置日志格式
2. 错误日志(Error Log)
- 功能:
- 错误诊断:记录MySQL启动、运行、关闭过程中的错误和警告信息。
- 运维监控:帮助快速定位服务异常(如权限问题、端口冲突、存储引擎崩溃等)。
- 默认路径:
- Linux:
/var/log/mysql/error.log - Windows:
C:\ProgramData\MySQL\MySQL Server 8.0\Data\<hostname>.err
- Linux:
- 配置参数:
[mysqld] log_error = /var/log/mysql/error.log # 指定错误日志路径
3. 查询日志(General Query Log)
- 功能:
- 全量SQL记录:记录所有客户端连接和执行的SQL语句(包括SELECT、CONNECT等)。
- 调试与审计:用于分析应用行为或排查异常请求。
- 注意:开启后可能显著增加磁盘I/O和空间占用。
- 配置参数:
[mysqld] general_log = ON # 启用查询日志 general_log_file = /var/log/mysql/query.log
4. 慢查询日志(Slow Query Log)
- 功能:
- 性能优化:记录执行时间超过阈值(默认10秒)或未使用索引的SQL。
- 索引分析:通过日志发现缺失索引或低效查询。
- 配置参数:
[mysqld] slow_query_log = ON # 启用慢查询日志 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 # 超过2秒的查询视为慢查询 log_queries_not_using_indexes = ON # 记录未使用索引的查询
5. 重做日志(Redo Log)
- 功能:
- 崩溃恢复:确保事务的持久性(Durability),在系统崩溃后通过重做日志恢复已提交但未写入磁盘的事务。
- 物理日志:记录数据页的物理修改(如页号、偏移量、修改内容)。
- 结构:
- 日志文件组:通常由
ib_logfile0和ib_logfile1组成,循环写入。 - Write-Ahead Logging (WAL):事务提交前必须将日志写入磁盘。
- 日志文件组:通常由
- 配置参数:
[mysqld] innodb_log_file_size = 512M # 单个重做日志文件大小 innodb_log_files_in_group = 2 # 日志文件数量
6. 回滚日志(Undo Log)
- 功能:
- 事务回滚:保存事务修改前的旧值,支持事务的原子性(Atomicity)。
- MVCC实现:为其他事务提供数据的历史版本,实现一致性非锁定读(Read View)。
- 存储位置:默认在系统表空间(
ibdata1)或独立Undo表空间。 - 配置参数:
[mysqld] innodb_undo_directory = /var/lib/mysql/undo # Undo日志路径 innodb_undo_tablespaces = 2 # Undo表空间数量
对比总结
| 日志类型 | 存储引擎 | 主要功能 | 数据级别 |
|---|---|---|---|
| 二进制日志 | MySQL Server | 主从复制、时间点恢复 | 逻辑日志(SQL/行) |
| 错误日志 | MySQL Server | 错误诊断与监控 | 文本日志 |
| 查询日志 | MySQL Server | 全量SQL审计与调试 | 文本日志 |
| 慢查询日志 | MySQL Server | 性能优化与索引分析 | 文本日志 |
| 重做日志 | InnoDB | 崩溃恢复、事务持久性 | 物理日志(数据页) |
| 回滚日志 | InnoDB | 事务回滚、MVCC支持 | 逻辑日志(旧数据) |
应用场景示例
- 主从同步异常:检查二进制日志是否正常生成及传输。
- 数据库崩溃恢复:依赖重做日志恢复未落盘的事务。
- 性能调优:分析慢查询日志优化SQL和索引。
- 事务回滚:通过Undo Log撤销未提交的事务操作。
理解这些日志的作用和配置方式,有助于高效运维MySQL数据库,保障数据安全与系统稳定。
结束语
本篇是一个总结性的文章,后面会详细分析二进制日志、重做日志以及回滚日志以及MVCC的原理。
相关文章:
MySQL六大日志的功能介绍。
前言 首先,MySQL的日志应该包括二进制日志(Binary Log)、错误日志(Error Log)、查询日志(General Query Log)、慢查询日志(Slow Query Log)、重做日志(Redo …...
二级指针略解【C语言】
以int** a为例 1.二级指针的声明 a 是一个指向 int*(指向整型的指针)的指针,即二级指针。 通俗的讲,a是一个指向指针的指针,对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...
鸿蒙状态管理概述
状态管理 状态管理之v1LocalStorageLocalStorageLink的框架行为LocalStorageProp的框架行为LocalStorage使用场景 AppStorageStorageLink的框架行为StorageProp的框架行为AppStorage的使用场景 PersistentStorageEnvironmentEnvironment内置参数 WatchWatch的使用场景 $$语法$$…...
【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》
引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…...
由浅入深学习大语言模型RLHF(PPO强化学习- v1浅浅的)
最近,随着DeepSeek的爆火,GRPO也走进了视野中。为了更好的学习GRPO,需要对PPO的强化学习有一个深入的理解,那么写一篇文章加深理解吧。纵观网上的文章,要么说PPO原理,各种复杂的公式看了就晕,要…...
网络安全三件套
一、在线安全的四个误解 Internet实际上是个有来有往的世界,你可以很轻松地连接到你喜爱的站点,而其他人,例如黑客也很方便地连接到你的机器。实际上,很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“…...
瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库
目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…...
【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】
ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase05 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-005测试用例 用例ID测试场景验证要点参考条款预期…...
python-leetcode 35.二叉树的中序遍历
给定一个二叉树的根节点root,返回它的中序遍历。 方法一:递归 二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过…...
glob 用法技巧
目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件: 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧:用 iglob 替代 glob,逐…...
CodeGPT 使用教程(适用于 VSCode)
CodeGPT 使用教程(适用于 VSCode) CodeGPT 是一个 VSCode 插件,可以让你在代码编辑器中直接调用 GPT 进行代码补全、优化、调试等操作。以下是详细的安装和使用步骤: 1. 安装 CodeGPT 方式 1:从 VSCode 插件市场安装…...
以下是MySQL中常见的增删改查语句
以下是MySQL中常见的增删改查语句: 增加数据(INSERT) 基本语法: INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...); 示例:向名为 students 的表中插入一条学生记录, id 为1&am…...
Vue3 与 TypeScript 实战:核心细节与最佳实践
引言 Vue3 的 Composition API 与 TypeScript 的强类型支持完美契合,极大提升了代码的可维护性和开发体验。本文将深入探讨 Vue3 TypeScript 的关键细节,并通过实际代码示例展示如何高效结合二者。 一、组合式 API 与类型推导 Vue3 的 setup 函数与 T…...
23种设计模式 - 解释器模式
模式定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现…...
常用的 React Hooks 的介绍和示例
目录 1. useState2. useEffect3. useContext4. useReducer5. useCallback6. useMemo7. useRef8. useImperativeHandle9. useLayoutEffect10. useDebugValue 常用的 React Hooks 的介绍和示例: 1. useState useState 是一个用于在函数组件中添加状态的 Hook。 impo…...
ChatGLM-6B模型
ChatGLM-6B 是由 清华大学人工智能研究院(THU AI) 和 智源研究院(BAAI) 开发的一款中文对话生成大语言模型。它是ChatGLM系列的一个版本,其核心特点是基于GLM(General Language Model)架构&…...
编译安装php
前置准备 这里的可能不全,每个人安装的模块不一致,依赖也不不相同,按实际情况调整 yum install libxml2 -y yum install libxml2-devel -y yum install openssl-devel -y yum install sqlite-devel -y yum install libcurl-devel -yyum ins…...
【JavaEE进阶】Spring MVC(3)
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ 返回响应 返回静态页面 //RestController Controller RequestMapping("/response") public class ResponseController {RequestMapping("/returnHtmlPage&…...
30 款 Windows 和 Mac 下的复制粘贴软件对比
在日常电脑操作中,复制粘贴是极为高频的操作,一款好用的复制粘贴软件能极大提升工作效率。以下为你详细介绍 30 款 Windows 和 Mac 下的复制粘贴软件,并对比它们的优缺点,同时附上官网下载地址,方便大家获取软件。 Pa…...
【LLAMA】羊驼从LLAMA1到LLAMA3梳理
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 LLAMA 1到3梳理 1. LLAMA 1 论文: LLaMA: Open and Efficient Foundation Language Models 时间: 2023.02 1.1 前言…...
大模型黑盒蒸馏技术:GAD框架解析与实践
1. 大模型黑盒蒸馏的挑战与机遇在自然语言处理领域,大型语言模型(LLM)展现出惊人的能力,但其庞大的参数量也带来了高昂的计算成本。知识蒸馏(Knowledge Distillation)技术通过将大模型(教师模型…...
正宗阳澄湖大闸蟹:5款高口碑礼盒推荐 佳节送礼首选
每年中秋送礼,我最怕的一件事:👉 买到“假阳澄湖大闸蟹”😭真的不是夸张,现在市面上太多“写着阳澄湖,其实不是阳澄湖”的蟹了…踩过一次坑之后,才慢慢搞明白怎么选。今年这套我选对了ÿ…...
【VS Code远程容器开发终极优化指南】:5个被90%开发者忽略的插件下载加速技巧,提速300%!
更多请点击: https://intelliparadigm.com 第一章:VS Code远程容器开发插件下载加速的底层原理与瓶颈分析 VS Code 的 Remote-Containers 扩展在拉取官方 Dev Container 镜像(如 mcr.microsoft.com/vscode/devcontainers/python:3.11&#x…...
周菜单生成器:基于规则引擎与约束优化的自动化饮食规划方案
1. 项目概述:从“今天吃什么”到自动化周菜单生成“今天吃什么?”这个问题,大概是每个需要自己动手解决三餐的人,每周都要面对的灵魂拷问。无论是为了健康饮食、控制预算,还是单纯想摆脱“外卖选择困难症”,…...
设备预测性维护在物联网中的实践案例
随着工业4.0和智能制造的快速发展,设备预测性维护(Predictive Maintenance, PdM)已成为企业提升运营效率、降低维护成本的关键技术。物联网(IoT)技术的广泛应用,使得设备状态监测和故障预测变得更加精准和高…...
TinyLlama轻量级大模型微调实战:TRL与LoRA技术解析
1. 项目概述在自然语言处理领域,微调预训练语言模型已经成为定制化文本生成任务的标准方法。TinyLlama作为轻量级开源大语言模型,因其1.1B参数量和小巧的体积,特别适合在消费级硬件上进行微调实验。本项目使用TRL(Transformer Rei…...
ISIS协议里的“身份证”:深入浅出聊聊NSAP和NET地址的设计哲学与实战意义
ISIS协议里的“身份证”:解码NSAP与NET地址的设计智慧与工程实践 当网络设备需要彼此识别时,它们靠什么证明自己的身份?就像人类社会的身份证承载着地域、出生信息和唯一编号,IS-IS协议中的NSAP和NET地址同样蕴含着精妙的设计哲学…...
雀魂AI教练系统:三分钟打造你的私人麻将大师
雀魂AI教练系统:三分钟打造你的私人麻将大师 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki, with…...
加权h变换在视觉生成中的应用与原理
1. 项目概述:基于加权h变换的视觉生成方法在计算机视觉领域,如何从低质量或退化的视觉样本(如模糊图像、低分辨率图像或扭曲视频)生成高质量结果一直是个重要挑战。传统方法通常需要大量配对数据训练特定模型,不仅成本…...
【企业级AI沙箱部署白皮书】:从本地PoC到金融级生产环境的7步合规迁移路径
更多请点击: https://intelliparadigm.com 第一章:企业级AI沙箱部署白皮书概述 企业级AI沙箱是保障模型研发安全、合规与可复现的核心基础设施,它通过资源隔离、权限分级、行为审计与环境快照四大能力,在生产边缘构建可控的AI实验…...
