【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.cnf或my.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.cnf或my.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下可以使用
vim和gedit等。
删除通用查询日志
- 删除方法
可以用直接删除日志文件的方式删除通用查询日志。 即找到目标文件,直接删除即可。
- 重新建立新的通用查询日志文件
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;
- 接下来,二进制日志会发生以下变化。
- 当前正在使用的二进制日志文件(d:/log/binlog.log)会被关闭。
- 创建新的二进制日志文件:系统会创建一个新的二进制日志文件,文件名通常是当前文件名加上一个递增的序号。当前文件是
binlog.log,新的文件可能会是binlog.000001- 文件序号递增:如果二进制日志文件的命名方式包含序号(如
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数据库中的日志种类以及基本命令进行讨论!! 回顾:Ǵ…...
【线段树 二分查找】P3939 数颜色|普及+
本文涉及知识点 C线段树 C二分查找 P3939 数颜色 题目背景 大样例可在页面底部「附件」中下载。 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的。每只兔子都有一种颜色,不同的兔子可能有 相同的颜色。小 C 把她标号从 1 到 n n n 的 n n n 只兔…...
2011年下半年软件设计师考试上午题真题的详细知识点分类整理(附真题及答案解析)
以下是针对2011年下半年软件设计师考试上午题真题的详细知识点分类整理,涵盖所有题目涉及的核心知识点,供考生背诵记忆: 1. 数据结构与算法 树与图: 树的性质:树的节点数、深度、叶子节点数之间的关系。二叉树遍历&am…...
tmagic-editor,腾讯开源的基于 Vue3 的页面可视化编辑器
hi, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践,也陆陆续续设计并开发了多款可视化搭建产品,比如: H5-Dooring(页面可视化搭建平台)V6.Dooring(可视化大屏搭建平台)F…...
K8s学习总结
文章目录 介绍Kubernetes 核心组件k8s安装环境安装组件 常用命令测试1. 创建一个测试应用程序2. 检查 Pod 是否运行 3. 暴露应用让外部访问4. 查看服务的暴露端口5. 访问 nginx 服务6. 验证节点调度 如有错误,敬请指针,谢谢! 介绍 Kubernetes࿰…...
正则表达式(Regular expresssion)
正则表达式 匹配单次 . :匹配任意一个字符 [ ] :匹配[ ]里举例的任意一个字符 /d :匹配数字0-9 /D :匹配非数字 /s :匹配空白或tab建 /S :匹配非空白 /w :…...
Python的那些事第二十一篇:Python Web开发的“秘密武器”Flask
基于 Flask 框架的 Python Web 开发研究 摘要 在 Web 开发的江湖里,Python 是一位武林高手,而 Flask 则是它手中那把小巧却锋利的匕首。本文以 Flask 框架为核心,深入探讨了它在 Python Web 开发中的应用。通过幽默风趣的笔触,结合实例和表格,分析了 Flask 的特性、优势以…...
MySQL的聚簇索引与非聚簇索引
前言 首先我们要了解到,聚簇索引只能有一个,而非聚簇可以有多个。在本文中可以了解到,范围查询时聚簇索引的优势,以及非聚簇索引在频繁更新时的劣势。 在MySQL中,主键索引通常就是聚簇索引,如果没有显式…...
vscode的一些实用操作
1. 焦点切换(比如主要用到使用快捷键在编辑区和终端区进行切换操作) 2. 跳转行号 使用ctrl g,然后输入指定的文件内容,即可跳转到相应位置。 使用ctrl p,然后输入指定的行号,回车即可跳转到相应行号位置。...
C++11 thread
文章目录 C11 线程库线程对象的构造方式无参的构造函数调用带参的构造函数调用移动构造函数thread常用成员函数 this_thread命名空间join && detachmutex C11 线程库 线程对象的构造方式 无参的构造函数 1、调用无参的构造函数,调用无参的构造函数创建出来的线程对象…...
rabbitmq五种模式的总结——附java-se实现(详细)
rabbitmq五种模式的总结 完整项目地址:https://github.com/9lucifer/rabbitmq4j-learning 一、简单模式 (一)简单模式概述 RabbitMQ 的简单模式是最基础的消息队列模式,包含以下两个角色: 生产者:负责发…...
Qt中基于开源库QRencode生成二维码(附工程源码链接)
目录 1.QRencode简介 2.编译qrencode 3.在Qt中直接使用QRencode源码 3.1.添加源码 3.2.用字符串生成二维码 3.3.用二进制数据生成二维码 3.4.界面设计 3.5.效果展示 4.注意事项 5.源码下载 1.QRencode简介 QRencode是一个开源的库,专门用于生成二维码&…...
Java数据结构---链表
目录 一、链表的概念和结构 1、概念 2、结构 二、链表的分类 三、链表的实现 1、创建节点类 2、定义表头 3、创建链表 4、打印链表 5、链表长度 6、看链表中是否包含key 7、在index位置插入val(0下标为第一个位置) 8、删除第一个关键字key …...
mongodb是怎么分库分表的
在构建高性能的数据库架构时,MongoDB的分库分表策略扮演着至关重要的角色,它通过一系列精细的步骤确保了数据的高效分布与访问。以下是对这一过程的详尽阐述,旨在提供一个清晰且优化过的理解框架。 确定分片键(Shard Key…...
C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
八叉树碰撞检测是一种在三维空间中高效处理物体碰撞检测的算法,其原理可以类比为一个管理三维空间物体的智能系统。这个示例包含两个部分:八叉树部分用于宏观检测,AABB用于微观检测。AABB可以更换为均值或节点检测来提高检测精度。 八叉树的…...
spring boot对接clerk 实现用户信息获取
在现代Web应用中,用户身份验证和管理是一个关键的功能。Clerk是一个提供身份验证和用户管理的服务,可以帮助开发者快速集成这些功能。在本文中,我们将介绍如何使用Spring Boot对接Clerk,以实现用户信息的获取。 1.介绍 Clerk提供…...
一种动态地址的查询
背景 当我们注入一个进程,通过函数地址进行call时经常会遇到这样的一个问题。对方程序每周四会自动更新。更新后之前的函数地址就变化了,然后需要重新找地址。所以,我就使用了一个动态查询的方式。 第一步:先为需要call的函数生…...
周雨彤:用角色与生活,诠释审美的艺术
提到内娱审美优秀且持续在线的女演员,周雨彤绝对是其中最有代表性的一个。 独树一帜的表演美学 作为新生代演员中的实力派代表,周雨彤凭借细腻的表演和对角色的深度共情,在荧幕上留下了多个令人难忘的“出圈”形象。在《我在他乡挺好的》中…...
使用jks给空apk包签名
1、在平台官方下载空的apk包(上传应用时有提醒下载) 2、找到jdk目录,比如C:\Program Files\Java\jdk1.8\bin,并把下载的空包apk和jks文件放到bin下 3、以管理员身份运行cmd,如果不是管理员会签名失败 4、用cd定位到…...
500. 键盘行 771. 宝石与石头 简单 find接口的使用
500. 键盘行1 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行。 美式键盘 中: 第一行由字符 "qwer…...
解放硬盘空间:AntiDupl.NET开源工具智能识别重复图片的完整指南
解放硬盘空间:AntiDupl.NET开源工具智能识别重复图片的完整指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在数字时代,图片文件如同数字世…...
别只当它是Word!用WPS Office 2019 for Linux搞定公文、合同与长文档排版的完整指南
别只当它是Word!用WPS Office 2019 for Linux搞定公文、合同与长文档排版的完整指南 在Linux生态中处理专业文档常被视为"不可能的任务",直到WPS Office 2019 for Linux带来了一套完整的解决方案。不同于普通办公场景,公文、合同、…...
AMD锐龙笔记本降压超频避坑指南:从PBO设置到Prime95烤机,一次讲清所有细节
AMD锐龙笔记本降压超频实战手册:原理剖析与精准调校 在性能与功耗的平衡木上,AMD锐龙移动处理器用户常面临两难选择——要么忍受高温降频带来的性能损失,要么接受风扇狂转的噪音困扰。而降压超频(Undervolting)这项源自…...
开发者如何利用 Taotoken 快速切换模型以应对不同场景需求
开发者如何利用 Taotoken 快速切换模型以应对不同场景需求 1. 多模型统一接入的价值 在构建多功能 AI 应用时,开发者常面临模型选型与接入的复杂性。不同场景对模型能力的需求各异:对话交互可能需要更强的上下文理解,代码生成需要编程语言的…...
魔兽争霸3兼容性终极解决方案:5分钟让经典游戏在Windows 10/11完美运行
魔兽争霸3兼容性终极解决方案:5分钟让经典游戏在Windows 10/11完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在…...
从滴滴 vs 美团打车看Stackelberg博弈:平台定价策略背后的真实商业逻辑
滴滴与美团打车的定价暗战:Stackelberg博弈如何重塑网约车市场格局 清晨七点半的北京国贸地铁站外,滴滴司机王师傅刚接完一单早高峰订单,手机同时弹出两条通知——滴滴将早高峰时段司机端补贴上调15%,而美团打车则在十分钟后更新了…...
日期间隔匹配的SAS实例解析
在数据分析和处理的过程中,经常需要对来自不同数据集的数据进行比对和处理。特别是当涉及到日期间隔的匹配时,这种需求尤为常见。本文将通过一个具体的实例,讲解如何使用SAS编程语言来实现日期间隔的匹配,并生成新的数据集。 数据背景 假设我们有两个数据集: DB1 - 包含…...
从零部署私有ChatGPT服务:技术架构、安全实践与成本控制
1. 项目概述:从零到一部署一个专属的ChatGPT对话服务最近在GitHub上看到一个挺有意思的项目,叫“DouDOU-start/chatgpt-register-deploy”。光看名字,你大概能猜到它想做什么:帮你搞定ChatGPT的注册和部署。但如果你以为这只是个简…...
告别乱码和鬼影!手把手教你用STC89C52驱动LCD1602(附完整代码和电位器调试技巧)
从零到一:STC89C52驱动LCD1602的避坑实战指南 第一次点亮LCD1602时,屏幕上那些难以辨认的乱码和模糊不清的"鬼影"几乎是每个单片机新手的必经之路。这些看似简单的显示问题背后,往往隐藏着硬件连接、初始化时序和对比度调节等多重陷…...
自适应预测分布收敛性研究及其应用
1. 研究背景与核心问题在概率论与统计学的前沿领域,预测分布序列的收敛特性一直是理论研究的重点难点。这个课题源于我在金融风险建模中的实际需求——当我们用蒙特卡洛方法模拟市场波动时,发现不同预测模型生成的分布序列会呈现显著差异。这促使我开始系…...
