【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】😆
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!

在这里插入图片描述

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

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

相关文章

python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注

【1】引言 前序学习进程中,已经使用cv2.findContours()函数cv2.drawContours()函数实现图像轮廓识别和标注,这种标注沿着图像的轮廓进行,比较细致。相关文章链接为: python学opencv|读取图像(六十四)使用…

DeepSeek-V3 技术报告

DeepSeek-V3 Technical Report https://arxiv.org/abs/2412.19437 1. 核心贡献 DeepSeek-V3 是一个拥有 6710 亿参数的大规模混合专家(MoE)语言模型,每个 token 激活 370 亿参数。 该模型通过创新的架构设计和训练策略,实现了高效…

PCIe7.0信号完整性优化的一些方向

首先考虑过孔stub的影响,分别仿真10mil stub,6mil stub,3mil stub以及无stub四种情况,观察insertion loss/ return loss/TDR Impedance profile、crosstalk四个参数对比情况。 仿真对比结果如下: 其次,考虑…

学习threejs,使用PointLight点光源

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.PointLight 二、&…

30填学习自制操作系统第二天

今天要干什么? 初步了解汇编语言使用汇编重新写个昨天的镜像文件继续开发 一: 什么是电信号? 电脑的处理中心是CPU,即“central process unit”的缩写,翻译成中文就是“中央处理单元”,顾名思义,他就是…

Python的顺序结构和循环结构

文章目录 一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(c)多分支 if-elif-elif-...-else (3)注意事…

金蝶云星空点击按钮实现指定文件下载

文章目录 金蝶云星空点击按钮实现指定文件下载业务需求开发实现 金蝶云星空点击按钮实现指定文件下载 业务需求 点击按钮,下载excel 开发实现 创建表单插件,在按钮点击事件,调用附件下载窗口进行指定路径的指定文件下载 模板存放路径 …

EasyExcel的简单使用

EasyExcel使用 官方文档&#xff1a;关于EasyExcel 1.1EasyExcel相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.11</version></dependency> 1.2 写Excel 1.2.1 最…

游戏引擎学习第107天

仓库:https://gitee.com/mrxiao_com/2d_game_2 回顾我们之前停留的位置 在这段内容中&#xff0c;讨论了如何处理游戏中的三维效果&#xff0c;特别是如何处理额外的“Z层”。由于游戏中的艺术资源是位图而不是3D模型&#xff0c;因此实现三维效果变得非常具有挑战性。虽然可…

「vue3-element-admin」基于 TypeScript 的 ECharts 按需引入方案实战 - Vue3 项目打包体积优化 57%

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

用Python实现图像风格迁移的技术分析

文章目录 一、概要 二、效果预览 三、整体架构流程 1. 用户界面(GUI): 2. 图像加载与显示: 3. 风格迁移核心算法: 4. 结果显示与保存: 5. 多线程处理: 四、技术名词解释 1. OpenCV: 2. TensorFlow: 3. VGG19: 4. GUI(图形用户界面): 5. 多线程: 五…

gsoap实现webservice服务

gsoap实现webservice服务 在实现Web服务时&#xff0c;使用gSOAP是一个很好的选择&#xff0c;因为它提供了强大的工具和库来创建SOAP和RESTful服务。gSOAP是一个C和C语言开发的库&#xff0c;它支持SOAP协议的各种版本&#xff0c;包括SOAP 1.1和SOAP 1.2。下面是如何使用gSO…

穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝

穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝 1. 全排列2. 子集 1. 全排列 题目链接&#xff1a;46. 全排列 算法原理&#xff1a; 画出决策树 设计函数 全局变量&#xff1a;二维数组ret存储结果&#xff1b;一维数组path存储路径&#xff1b;boolean类型一维数组visited表示当…

NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略

目录 NAT的作用 NAT类型 NAT工作流程示例 NAT 转换技术的原理 源地址转换&#xff08;SNAT&#xff0c;Source NAT&#xff09;&#xff1a; 目标地址转换&#xff08;DNAT&#xff0c;Destination NAT&#xff09;&#xff1a; 端口地址转换&#xff08;PAT&#xff0c…

OpenCV图像基本操作

学习目标&#xff1a; 学习一些OpenCV中对于图像的基本操作 学习内容&#xff1a; 第一步导入库和所需的图像。 import cv2 import numpy as np imgcv2.imread("lena.png") # cv2.imshow("img",img) # cv2.waitKey(0) 访问和修改图片像素 访问图片像素…

具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例

随着机器人技术和人工智能的迅速发展&#xff0c;具身智能在各行业的应用日益广泛&#xff0c;尤其是在电力行业中的智能巡检领域。传统的电力巡检和维护工作通常需要人工操作&#xff0c;存在着高温、高压、强电磁场等危险环境&#xff0c;且效率较低。开关柜带电操作机器人作…

巨控GRM530系列的远程模块用于PLC远程上下载方案

巨控GRM530系列的远程模块用于PLC远程上下载方案 一、方案概述 巨控科技基于全球加速服务器与智能通讯模块&#xff0c;提供高效、安全的工业设备远程上下载及维护服务。支持多协议PLC、触摸屏、运动控制器等设备&#xff0c;突破地域限制&#xff0c;实现跨国、跨网络的无缝调…

fastadmin快速搭建导航站和API接口站点系统

这份源码是基于fastadmin框架制作的&#xff0c;不仅可以快速搭建漂亮的导航站和API接口站点&#xff0c;而且还具有可扩展性和定制性。源码开放&#xff0c;方便二次开发和定制&#xff0c;适合各种需求。快来体验这个功能强大的站点源码&#xff0c;为您的项目提供便捷解决方…

【VB语言】EXCEL中VB宏的应用

【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、EXCEL-VB 1.实验过…

告别第三方云存储!用File Browser在Windows上自建云盘随时随地访问

文章目录 前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 无论是个人用户还是企业团队&#xff0c;都希望能够有一个高效、安全的解决方案来…