当前位置: 首页 > article >正文

【MySQL】我在广州学Mysql 系列——Mysql 日志管理详解

ℹ️大家好,我是练小杰,今天又是新的一周了,又该摆好心态迎接美好的明天了!!!😆
本文主要对Mysql数据库中的日志种类以及基本命令进行讨论!!

回顾:👉【MySQL 数据备份与还原】
数据库专栏:👉【数据库专栏】【Mysql练习题】

主页: 【练小杰的CSDN】

在这里插入图片描述

Mysql 日志

    • 主页: 【[练小杰的CSDN](https://blog.csdn.net/weixin_55767624?spm=1011.2266.3001.5343)】
  • 日志简介
    • MySQL 日志的作用
    • 日志的管理与维护
  • 二进制日志
    • 启动和设置二进制日志
      • 代码说明
    • 查看二进制日志
    • 删除二进制日志
    • 使用二进制日志还原数据库
    • 暂时停止二进制日志功能
  • 错误日志(Error Log)
    • 启动和设置错误日志
    • 查看错误日志
    • 删除错误日志
  • 通用查询日志
    • 启动和设置通用查询日志
    • 查看通用查询日志
    • 删除通用查询日志
  • 慢查询日志(Slow Query Log)
    • 启动和设置慢查询日志
    • 查看慢查询日志
    • 删除慢查询日志
  • 综合示例——有关MySQL日志的综合管理
    • 步骤1:设置启动二进制日志,并指定二进制日志文件名为`binlog.log`
    • 步骤2:将二进制日志文件存储路径改为`d:/log`
    • 步骤3: 查看`flush logs`对二进制日志的影响。
    • 步骤4:查看二进制日志。
    • 步骤5:使用二进制日志还原数据
    • 步骤6:删除二进制日志
    • 步骤7:暂停和重新启动二进制日志
    • 步骤8:设置启动错误日志。
    • 步骤9:设置错误日志的文件为`d:/log/error_log.err`
    • 步骤10:查看错误日志
    • 步骤11:设置启动通用查询日志
    • 步骤13:设置启动慢查询日志
    • 步骤14:查看慢查询日志。

在这里插入图片描述

日志简介

  • MySQL日志主要分为4类
  • 错误日志 ,记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。
  • 查询日志,记录建立的客户端连接和执行的语句。
  • 二进制日志,记录所有更改数据的语句。可以用于数据复制。
  • 慢查询日志,记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。

MySQL 日志的作用

  • 故障排查:用于记录错误信息,帮助定位问题。

  • 性能优化:分析慢查询日志,优化繁琐的 SQL 语句。

  • 数据恢复:通过二进制日志实现数据恢复。

  • 审计与安全:记录用户操作,便于审计和安全分析。

日志的管理与维护

  • 日志轮转:定期清理和归档日志文件,避免占用过多磁盘空间。主要使用 logrotate 工具管理日志文件。

  • 日志备份:定期备份重要日志(如二进制日志),用于数据恢复。

  • 日志分析:使用工具(如 pt-query-digest)分析慢查询日志,优化 SQL 性能。

二进制日志

二进制日志(Binary Log)是MySQL中非常重要的日志类型,用于记录所有更改数据库的操作。它主要用于数据复制和数据恢复。以下是有关二进制日志的基本操作命令。

启动和设置二进制日志

二进制日志记录了所有更改数据的语句,如INSERT、UPDATE、DELETE等。它主要用于数据复制(主从复制)和数据恢复。

  • 在MySQL配置文件(my.cnfmy.ini)中,可以通过以下参数启用和设置二进制日志:
[mysqld]
log_bin=/var/log/mysql/binlog
server-id=1

代码说明

  • log_bin:指定二进制日志文件的路径和名称。
  • server-id:为服务器指定一个唯一的ID,用于主从复制。

查看二进制日志

  • 使用 SHOW BINARY LOGS 命令查看当前服务器上的二进制日志文件列表:

    SHOW BINARY LOGS;
    
  • 要查看某个二进制日志文件的内容,可以使用 mysqlbinlog 工具:

    mysqlbinlog  /var/log/mysql/binlog.000001
    

删除二进制日志

  • 自动删除

我们可以通过设置二进制日志的过期时间来自动删除旧的二进制日志文件。比如以下代码配置,表示二进制日志文件将在7天后自动删除。

[mysqld]
expire_logs_days=7
  • 手动删除

使用 PURGE BINARY LOGS 命令手动删除二进制日志文件。

PURGE BINARY LOGS TO 'binlog.000003';

使用二进制日志还原数据库

  • 数据恢复

我们可以利用 mysqlbinlog 工具将二进制日志应用到数据库,以恢复数据。例如,恢复到某个时间点:

mysqlbinlog --stop-datetime="2025-02-16 23:45:30" /var/log/mysql/binlog.000001 | mysql -u root -p

以上命令将恢复 binlog.000001 文件中截止到指定时间点的数据。

暂时停止二进制日志功能

  • 临时停止:如果需要临时停止二进制日志功能,可以在MySQL会话中执行以下命令。
SET SQL_LOG_BIN=0;
  • 若是需要重新启用二进制日志记录,可以执行:
SET SQL_LOG_BIN=1;

⚠️注意:停止二进制日志记录可能会影响数据复制和数据恢复功能,因此应谨慎使用。

错误日志(Error Log)

MySQL中非常重要的日志类型,用于记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。它对于故障排查和系统维护至关重要。

启动和设置错误日志

错误日志记录了MySQL服务器启动、运行或停止过程中出现的关键错误信息。它有助于数据库管理员(DBA)进行故障排查和安全审计。

  • 配置:在MySQL配置文件(my.cnfmy.ini)中,可以通过以下参数启用和设置错误日志:
[mysqld]
log_error=/var/log/mysql/error.log

其中, log_error 用于指定错误日志文件的路径和名称。

查看错误日志

我们可以使用tail 命令查看错误日志的内容,比如,下列命令 将显示错误日志文件末尾的100行内容,帮助快速定位最近的错误信息。

tail -n 100 /var/log/mysql/error.log

删除错误日志

  • 自动删除

可以通过日志轮转工具(比如logrotate)定期轮转和压缩日志文件,防止磁盘空间不足。

  • 手动删除

还手动删除旧的错误日志文件,但是建议在删除之前备份重要的日志文件。

mv /var/log/mysql/error.log /var/log/mysql/error.log.bak

通用查询日志

通用查询日志(General Query Log)是MySQL中用于记录所有客户端连接和执行的语句的日志类型。它对于调试和审计非常有用,但是会显著增加日志文件的大小。

启动和设置通用查询日志

在MySQL配置文件(my.ini或my.cnf)中,可以通过以下参数启用和设置通用查询日志。

[mysqld]
general_log=1
general_log_file=/var/log/mysql/general.log
  • general_log:启用或禁用通用查询日志(1表示启用,0表示禁用)。
  • general_log_file:指定通用查询日志文件的路径和名称。

查看通用查询日志

  • 查看方法如下:

通用查询日志是以文本文件的形式存储在文件系统中的。我们可以使用文本编辑器直接打开通用日志文件进行查看,Windows下可以使用记事本,Linux下可以使用vimgedit等。

删除通用查询日志

  • 删除方法

可以用直接删除日志文件的方式删除通用查询日志。 即找到目标文件,直接删除即可。

  • 重新建立新的通用查询日志文件
mysqladmin -u root -p flush-logs

慢查询日志(Slow Query Log)

慢查询日志(Slow Query Log)是MySQL中用于记录所有执行时间超过指定阈值的查询语句的日志类型。它对于识别和优化性能瓶颈非常有帮助。

启动和设置慢查询日志

MySQL中慢查询日志默认是关闭的,可通过配置文件my.ini或者my.cnf中的log-slow-queries选项打开。
我们也可以在MySQL服务启动的时候使用--log-slow-queries[=file_name]启动慢查询日志。

[mysqld]
log-slow-queries[=path/[filename]]

查看慢查询日志

MySQL的慢查询日志是以文本形式存储的,可以直接使用文本编辑器查看。比如,window中可以用记事本打开文件。

删除慢查询日志

慢查询日志也可以直接删除。删除后在不重启服务器的情况下。

  • 重新生成慢查询日志文件
mysqladmin -u root -p flush-logs
flush logs

综合示例——有关MySQL日志的综合管理

步骤1:设置启动二进制日志,并指定二进制日志文件名为binlog.log

打开my.ini(或者my.cnf)在[mysqld]组下添加如下内容:

[mysqld]
log-bin=binlog.log
net stop mysql 
net start mysql

步骤2:将二进制日志文件存储路径改为d:/log

  • 首先打开my.ini(或者my.cnf)在[mysqld]组下修改如下内容:
[mysqld]
log-bin=d:/log/binlog.log
net stop mysql 
net start mysql

步骤3: 查看flush logs对二进制日志的影响。

mysqladmin flush-logs
FLUSH LOGS;
  • 接下来,二进制日志会发生以下变化。
  1. 当前正在使用的二进制日志文件(d:/log/binlog.log)会被关闭。
  2. 创建新的二进制日志文件:系统会创建一个新的二进制日志文件,文件名通常是当前文件名加上一个递增的序号。当前文件是binlog.log,新的文件可能会是binlog.000001
  3. 文件序号递增:如果二进制日志文件的命名方式包含序号(如binlog.000001),那么新文件的序号会比当前文件大1。

步骤4:查看二进制日志。

mysqlbinlog d:\log\binlog.000001
  • 执行结果示例:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#190328 10:45:00 server id 1 end_log_pos 107 CRC32 0x5e2f5a3d  Query   thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1553754300/*!*/;
SET @@session.time_zone='SYSTEM'/*!*/;
BEGIN
/*!*/;
# at 107
#190328 10:45:00 server id 1 end_log_pos 194 CRC32 0x8e890f1a  Query   thread_id=1 exec_time=0 error_code=0
use `test_db`/*!*/;
SET TIMESTAMP=1553754300/*!*/;
INSERT INTO `test_table` VALUES (1, 'test')
/*!*/;
# at 194
#190328 10:45:00 server id 1 end_log_pos 225 CRC32 0xafc9c3f1  Xid = 42
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  • 头部信息:包含了一些设置和分隔符。
  • BEGIN:表示一个事务的开始。
  • use test_db:切换到test_db数据库。
  • INSERT INTO test_table VALUES (1, 'test'):执行的SQL语句。
  • COMMIT:提交事务。
  • 尾部信息:包含了一些清理操作。

步骤5:使用二进制日志还原数据

USE test
CREATE TABLE member(id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(50));   /*创建数据库*/
INSERT INTO member VALUES(NULL, 'Playboy1');
INSERT INTO member VALUES(NULL, 'Playboy2');
SET SQL_LOG_BIN=0;    /*暂停二进制日志功能*/
drop table member;    /*删除数据表*/
SELECT * FROM member;
SET SQL_LOG_BIN=1;   /*打开二进制日志功能*/
mysqlbinlog d:/log/binlog.0000001 | mysql -u root -p   /*还原数据表*/
SELECT * FROM member;

步骤6:删除二进制日志

RESET MASTER;

步骤7:暂停和重新启动二进制日志

SET sql_log_bin = 0;   /*暂停日志*/
SET sql_log_bin =1;    /*打开日志*/

步骤8:设置启动错误日志。

[mysqld]
log-error

步骤9:设置错误日志的文件为d:/log/error_log.err

[mysqld]
log-error=d:/log/error_log.err

步骤10:查看错误日志

打开d:/log/error_log.err文件,可以使用任何文本编辑器,如记事本(Notepad)、Notepad++、Sublime Text等。

  • 还可以通过MySQL客户端查看
SHOW VARIABLES LIKE 'log_error';
  • 这将返回错误日志文件的路径,例如:
+---------------+----------------------+
| Variable_name | Value                |
+---------------+----------------------+
| log_error     | d:/log/error_log.err |
+---------------+----------------------+

步骤11:设置启动通用查询日志

设置通用查询日志文件为:d:/log/ gneral_query.log

[mysqld]
log =d:/log/general_query.log

步骤13:设置启动慢查询日志

设置慢查询日志的文件为d:/log/ slow_query.log,并设置记录查询时间超过3秒的语句。

[mysqld]
log-slow-queries=d:/log/slow_query.log
long_query_time=3

步骤14:查看慢查询日志。

查询方法和查询错误日志一样,都可以使用任何文本编辑器。

  • 通过MySQL客户端查看慢查询日志的位置:
SHOW VARIABLES LIKE 'slow_query_log_file';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| slow_query_log_file | d:/log/slow_query.log |
+---------------------+---------------------+
  • 使用以下命令查看慢查询日志的状态:
SHOW STATUS LIKE 'Slow_queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 10    |
+---------------+-------+

本文有关Mysql数据库的日志相关内容已讲完了,明天再见啦👋
主页:【练小杰的CSDN】😆
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!

在这里插入图片描述

相关文章:

【MySQL】我在广州学Mysql 系列——Mysql 日志管理详解

ℹ️大家好,我是练小杰,今天又是新的一周了,又该摆好心态迎接美好的明天了!!!😆 本文主要对Mysql数据库中的日志种类以及基本命令进行讨论!! 回顾:&#x1f4…...

《Zookeeper 分布式过程协同技术详解》读书笔记-2

目录 zk的一些内部原理和应用请求,事务和标识读写操作事务标识(zxid) 群首选举Zab协议(ZooKeeper Atomic Broadcast protocol)文件系统和监听通知机制分布式配置中心, 简单Demojava code 集群管理code 分布式锁 zk的一…...

HTML5+CSS多层级ol标签序号样式问题

在CSS中,ol标签用于创建有序列表,而多层级的ol标签可以通过CSS实现不同的序号样式。以下是一些常见的问题和解决方案: 1. 多层级ol的序号格式问题 默认情况下,多层级的ol标签会自动继承父级的序号格式,但有时我们可能…...

网络初始2:网络编程--基于UDP和TCP实现回显器

基础概念 1.发送端与接受端 在通过网络传输信息时,会有两个进程,接收端和发送端。 发送端:数据的发送方进程,即网络通信中的源主机。 接收端:数据的接收方进程,即网路通信中的目的主机。 2.Socet套接字…...

vtkCamera类的Dolly函数作用及相机拉近拉远

录 1. 预备知识 1.1.相机焦点 2. vtkCamera类的Dolly函数作用 3. 附加说明 1. 预备知识 要理解vtkCamera类的Dolly函数作用,就必须先了解vtkCamera类表示的相机的各种属性。  VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如…...

车载音频架构图详解(精简)

目录 上图是车载音频架构图,对这个图我们进行详细的分析 左边第一层 是 app 常用的类有MediaPlayer和MediaRecorder, AudioTrack和AudioRecorder 第二层 是framework提供给应用的多媒体功能的AP...

Android嵌套滑动造成的滑动冲突原理分析

嵌套滑动造成的滑动冲突原理分析 场景复现: CoordinatorLayout AppBarLayout Vertical RecyclerView Horizontal RecycleView Horizontal RecycleView 是Vertical RecyclerView的一个子view, CoordinatorLayout 实现了AppBarLayout 和 RecyclerView的协调联动…...

计算机专业知识【 轻松理解数据库四大运算:笛卡尔积、选择、投影与连接】

在数据库的世界里,有几个关键的运算操作,就像是神奇的魔法工具,能帮助我们对数据进行各种处理和组合。今天,咱们就来聊聊笛卡尔积运算、选择运算、投影运算和连接运算这四大运算,用超简单的例子让小白也能轻松理解。 …...

使用神经网络对驾驶数据进行道路类型分类

摘要 道路分类,了解我们是在城市、农村地区还是在高速公路上驾驶,可以提高现代驾驶员辅助系统的性能,并有助于了解驾驶习惯。本研究的重点是仅使用车速数据来普遍解决这个问题。已经开发了一种数据记录方法,用于为 On-board Diagn…...

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM,步入S4时代后由于Fiori的逐渐普及,更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…...

qt QOpenGLTexture详解

1. 概述 QOpenGLTexture 是 Qt5 提供的一个类,用于表示和管理 OpenGL 纹理。它封装了 OpenGL 纹理的创建、分配存储、绑定和设置像素数据等操作,简化了 OpenGL 纹理的使用。 2. 重要函数 构造函数: QOpenGLTexture(const QImage &image,…...

Deepseek-R1推理模型API接入调用指南 ChatGPT Web Midjourney Proxy 开源项目接入Deepseek教程

DeepSeek-R1和OpenAI o1模型都属于推理任务模型,两个模型各有优点:DeepSeek-R1 在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力。在数学、代码、自然语言推理等任务上,性能…...

蓝耘智算携手DeepSeek,共创AI未来

🌟 各位看官号,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习如何通过蓝耘智算使用DeepSeek R1模型 👍 如果觉得这篇文章有帮助,欢迎您一键三连&a…...

【网络编程】之数据链路层

【网络编程】之数据链路层 数据链路层基本介绍基本功能常见协议 以太网什么是以太网以太网协议帧格式数据链路层的以太网帧报文如何封装/解封装以及分用以太网通信原理传统的以太网与集线器现代以太网与交换机碰撞域的概念 Mac地址基本概念为什么要使用Mac地址而不是使用IP地址…...

EasyExcel 复杂填充

EasyExcel ​Excel表格中用{}或者{.} 来表示包裹要填充的变量,如果单元格文本中本来就有{、}左右大括号,需要在括号前面使用斜杠转义\{ 、\}。 ​代码中被填充数据的实体对象的成员变量名或被填充map集合的key需要和Excel中被{}包裹的变量名称一致。 …...

FreeRTOS第10篇:系统的“体检医生”——调试与跟踪

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 引言:嵌入式系统的“健康检查” 想象你是一名医生,面对一位患者(嵌入式系统),他偶尔会“头晕目眩”(任务崩溃)、“心…...

Unreal5从入门到精通之如何在 C++ 中创建 UserWidget

文章目录 前言UUserWidget 子类示例创建我们的 C++ 类的新蓝图子类更改现有蓝图的父类现在我们有了 C++ 基类,下一步做什么?蓝图还是 C++?结论前言 在之前的教程中,我展示了如何在编辑器中创建 UserWidget 蓝图, 在本教程中,我们将创建一个新的基于 C++ 的子类UUserWid…...

【大模型系列】Windows系统上运行大语言模型方式

在Windows系统上运行大语言模型(LLMs)有多种方式,以下是一些具体的方法: GPT4All 简介:GPT4All是一个适用于所有操作系统的LLM框架和聊天机器人应用程序,可以本地运行LLMs,并通过API将其与任何…...

Maven 中的 Artifact 与 GroupId:定义与使用

1. 什么是 Maven 的 Artifact 和 GroupId? 在 Maven 中,Artifact 和 GroupId 是构建和管理项目依赖的核心概念,它们用来唯一标识一个 Maven 项目或库。理解这两个概念对于管理 Maven 项目的依赖关系、构建过程和版本控制至关重要。 Artifac…...

滑动窗口-无重复字符的最长子串

无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。输入:字符串 输出:整型变量 思路:两个指针一前一后,最开始都在0位置,然后有值则快指针向右移动一位,判…...

猿大师办公助手:高效、安全、兼容的WebOffice在线办公解决方案

兼容性难题 浏览器插件逐渐被淘汰,依赖插件的传统Office控件难以适配现代浏览器,导致功能受限或完全无法使用。不同浏览器内核之间的兼容性问题,使得企业在选择Office控件时倍感困扰。 功能不完整 部分在线Office方案无法支持复杂的文档处理…...

通过VSCode直接连接使用 GPT的编程助手

GPT的编程助手在VSC上可以直接使用 选择相应的版本都可以正常使用。每个月可以使用40条,超过限制要付费。 如下图对应的4o和claude3.5等模型都可以使用。VSC直接连接即可。 配置步骤如下: 安装VSCODE 直接,官网下载就行 https://code.vis…...

【算法与数据结构】并查集详解+题目

目录 一,什么是并查集 二,并查集的结构 三,并查集的代码实现 1,并查集的大致结构和初始化 2,find操作 3,Union操作 4,优化 小结: 四,并查集的应用场景 省份…...

Java 集合数据处理技巧:使用 Stream API 实现多种操作

​ 在 Java 开发中,对集合数据进行处理是非常常见的需求,例如去重、排序、分组、求和等。Java 8 引入的 Stream API 为我们提供了一种简洁、高效的方式来处理集合数据。本文将详细介绍如何使用 Stream API 实现多种集合数据处理操作,并给出相…...

OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和…...

【kafka系列】broker

目录 Broker 接收生产者消息和返回消息给消费者的流程逻辑分析 Broker 处理生产者消息的核心流程 Broker 处理消费者消息的核心流程 关键点总结 Broker 接收生产者消息和返回消息给消费者的流程逻辑分析 Broker 处理生产者消息的核心流程 接收请求 Broker 的 SocketServer …...

OpenCV机器学习(5)逻辑回归算法cv::ml::LogisticRegression

OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::LogisticRegression 是 OpenCV 机器学习模块中的一个类,用于实现逻辑回归算法。逻辑回归是一种广泛应用于分类问题的统计方法,特别适合二分类任务。…...

FreeRTOS第12篇:系统的“绿色通道”——中断管理与临界区

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 引言:嵌入式系统的“紧急电话” 想象你正在主持一场重要会议:大部分时间按议程推进(任务执行),但偶尔会有紧急来电(硬…...

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底层实现 1、SpringBootApplication注解: SpringBootApplication注解:这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解是: aSpringBootConfiguration&#xff1a…...

SD NAND 的 SDIO在STM32上的应用详解(上篇)

目录 上篇: 一.SDIO简介 二.SD卡简介/内部结构 1.SD卡/SD NAND引脚 2.SD卡寄存器 3.FLASH存储器 三.SDIO总线拓扑 中篇: 四.SDIO功能框图(重点) 1.SDIO适配器 2.控制单元 3.命令通道(重点) 4.数…...