MySQL学习笔记10——日志

news2025/1/11 12:44:31

日志

  • 一、日志
    • 1、通用查询日志
      • (1)开启通用查询日志
      • (2)查看通用查询日志
      • (3)删除通用查询日志
    • 2、慢查询日志
    • 3、错误日志
    • 4、二进制日志
      • (1)查看二进制日志
      • (2)刷新二进制日志
      • (3)用二进制日志恢复数据
      • (4)删除二进制文件
    • 5、中继日志
    • 6、回滚日志
    • 7、重做日志

一、日志

日志在发现错误、数据复制、数据恢复、操作审计,以及确保数据的永久性和一致性等方面,都有着不可替代的作用,对提升你的数据库应用的开发能力至关重要。

MySQL的日志种类非常多,包括通用查询日志、慢查询日志、错误日志等帮助我们快速定位错误;二进制日志、中继日志、重做日志和回滚日志等可以帮助我们找回由于误操作而丢失的数据。

1、通用查询日志

通用查询日志记录了所有用户的连接开始时间和截止时间,以及发给MySQL数据库服务器的所有SQL指令。通用查询日志可以帮助我们了解操作发生的具体时间和操作的细节,对找出异常发生的原因极其关键。

下面具体介绍一下控制通用查询日志的系统变量。通过这些变量,我们会更清楚怎么控制通用查询日志的开启和关闭,以及保存日志的文件是哪个。

SHOW VARIABLES LIKE '%general%';

在这里插入图片描述
在这个查询的结果中,有2点需要我们注意一下。

  1. 系统变量general _log 的值是OFF,表示通用查询日志处于关闭状态。这个参数的默认值是关闭的,通用查询日志开启时会消耗系统资源并且占用磁盘空间。我们可以通过手动修改变量的值,在需要的时候开启日志。
  2. 通用查询日志文件的名称是DESKTOP-QH9B5HQ.log。这样我们就知道在哪里可以查看通用查询日志的内容了。

(1)开启通用查询日志

我们可以通过设置系统变量的值,来开启通用查询日志,并且指定通用查询日志的文件夹和文件名为"D:\mytest.log" 。这个操作如下:

-- 开启通用查询日志
SET GLOBAL general_log='ON';
-- 制定通用查询日志的文件夹和文件名为"D:\mytest.log"
SET @@global.general_log_file = 'D:\mytest.log'
-- 查询通用查询日志的状态,看是否操作成果
SHOW VARIABLES LIKE '%general%';

在这里插入图片描述

(2)查看通用查询日志

通用查询日志都是文本型数据,可以用记事本打开。
在这里插入图片描述

(3)删除通用查询日志

当用户对数据库的操作比较频繁时,通用查询日志文件会不断变大。为了节省磁盘空间,我们可以移除旧的日志文件,创建新的日志文件,来对通用查询日志文件进行维护。

步骤如下:

  1. 关闭通用查询日志
SET GLOBAL general_log='OFF';
  1. 把通用查询日志文件"D:\mytest.log" 移至备份文件夹,空出磁盘D的空间。
  2. 开启通用查询日志
    这个时候,你会发现,MySQL 已经给我们准备好了一个新的通用查询日志文件"D:lmytest.log",并且记录了我们第一个查询的语句。

2、慢查询日志

慢查询日志是用来记录执行时间超过指定时长的查询。它的主要作用是帮助我们发现那些执行时间特别长的SQL查询,并且有针对性地进行优化,从而提高系统的整体效率。

当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。

慢查询日志是由MySQL的配置文件进行控制的。在MySQL的安装目录中(C:\ProgramData\MySQL\MySQL Server 8.0), 我们可以找到MySQL的配置文件"my.ini" 。这个文件是一个文本格式的文件, 可以直接用记事本打开来阅读。

3、错误日志

错误日志记录了MySQL服务器启动、停止运行的时间,以及系统启动、运行和停止过程中的诊断信息,包括错误、警告和提示等。当我们的数据库服务器发生系统故障时,错误日志是发现问题、解决故障的首选。

错误日志默认是开启的。我们可以在MySQL的配置文件"my.ini" 中配置它。

4、二进制日志

二进制日志主要记录数据库的更新事件,比如创建数据表、更新表中的数据、数据更新所花费的时长等信息。通过这些信息,我们可以再现数据更新操作的全过程。而且,由于日志的延续性和时效性,我们还可以利用日志,完成无损失的数据恢复和主从服务器之间的数据同步。

可以说,二进制日志是进行数据恢复和数据复制的利器。操作二进制日志,主要包括查看、刷新二进制日志,用二进制日志恢复数据,以及删除二进制日志。

(1)查看二进制日志

查看二进制日志主要有3种情况,分别是查看当前正在写入的二进制日志、查看所有的二进制日志和查看二进制日志中的所有数据更新事件。

查看当前正在写入的二进制日志的SQL语句是:

SHOW MASTER STATUS;

查看所有的二进制日志的SQL语句是:

SHOW BINARY LOGS;

查看二进制日志中所有数据更新事件的SQL语句是:

SHOW BINLOG EVENTS IN 二进制文件名;

(2)刷新二进制日志

刷新二进制日志的SQL语句是:

FLUSH BINARY LOGS;

这条语句的意思是,关闭服务器正在写入的二进制日志文件,并重新打开一个新文件,文件名的后缀在现有的基础上加1。

(3)用二进制日志恢复数据

我们可以用mysqlbinlog工具进行数据恢复:

mysqlbinlog -start-positon=xxx -end-position-yyy 二进制文件名| mysql -u 用户 -p 

这条命令的意思是,执行二进制日志中从位置xxx开始,到yyy截止的所有数据更新操作。这里的截止位置也可以不写,意思是从位置xx开始,执行二进制文件中的所有数据更新操作。

(4)删除二进制文件

RESET MASTER;
SHOW BINARY LOGS; 
-- 删除比指定二进制日志文件编 号小的所有二进制日志文件:
PURGE MASTER LOGS TO 'GJTECH-PC-bin.000005' ;

5、中继日志

中继日志只在主从服务器架构的从服务器上存在。

从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的白志文件中,这个从服务器本地的日志文件就叫中继日志。

然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。

6、回滚日志

回滚日志的作用是进行事务回滚。

当事务执行的时候,回滚日志中记录了事务中每次数据更新前的状态。当事务需要回滚的时候,可以通过读取回滚日志,恢复到指定的位置。

另一方面,回滚日志也可以让其他的事务读取到这个事务对数据更改之前的值,从而确保了其他事务可以不受这个事务修改数据的影响。

7、重做日志

重做日志是存储在磁盘上的一种日志文件,主要有2个作用。

  1. 在系统遇到故障的恢复过程中,可以修复被未完成的事务修改的数据。
  2. MySQL为了提高数据存取的效率,减少磁盘操作的频率,对数据的更新操作不会立即写到磁盘上,而是把数据更新先保存在内存中,积累到一定程度,再集中进行磁盘读写操作。
    这样就存在一个问题:一旦出现宕机或者停电等异常情况,内存中保存的数据更新操作可能会丢失。这个时候就可以通过读取重做日志中记录的数据更新操作,把没来得及写到磁盘上的数据更新写到磁盘上,确保数据的完整性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新指南|创新组合管理的7个陷阱以及如何避免它们

进入未知领域的第一步可能具有挑战性。尽管创新会犯错误,但在将 IPM 作为公司实践实施时,您可以准备好并避免一些常见的陷阱。在这篇文章中,我们将讨论组织在实施创新组合管理时遇到的最常见的陷阱。 01. 在映射中包含日常业务任务 映射中的…

工会排队返现:创新促销模式,实现消费者与商家双赢

在数字化营销日益盛行的今天,各种促销策略层出不穷,但真正能够打动消费者内心并促成双赢局面的策略却并不多见。工会排队返现模式便是其中一例,它巧妙地融合了积分奖励、奖金池累积以及排队等待机制,为消费者和商家带来了全新的互…

C++入门--引用

点赞关注不迷路!本节涉及C入门--引用 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! 1.1 引用的概念 啥叫引用?其实很好理解,比如你隔壁邻居的孩子上学时大…

【练习3】

1.将二叉搜索树转为排序的双向链表 (好久没看数据结构,忘完了,学习大佬的代码) class Solution { public:Node* prenullptr,*headnullptr; //pre为每次遍历时的前一个节点,head记录头节点Node* treeToDoublyList(Node* root) {if…

PHP单独项目启动演示

文章目录 phpstudy得到文件打开phpStudy.exe运行项目 phpstudy 得到文件 一般我们会得到这么一个项目文件,如果外层有“中文路径”,请剪切此内容作为项目根目录即可 打开phpStudy.exe 因为我又正常的编程环境和mysql,所以这里是正常的&a…

linux数据备份与恢复

目录 前言 1、数据备份和恢复中的两个关键性指标 2、linux系统的定时任务 1)本地定时任务crontab 在实验测试过程中,遇到多次crontab任务不执行问题 ,总结下来主要有几个方面原因: 2)分布式定时任务系统Jenkins 3、备份存储…

TinyEngine 低代码引擎区块局域网部署方案全新上线!

本文由体验技术团队 TinyEngine 项目组成员创作~ 在 TinyEngine 开源后,对私有化部署存在诉求的用户越来越多,而当前 TinyEngine 多项内容都依托在公网中,当前官网提供的区块发布方案,为公网环境下的发布,不能完全满足…

信创基础软件之数据库

一、数据库概述 数据库是一种用于存储和管理拥有固定格式和结构数据的仓库型数据管理系统。其主要用于业务数据的存储和业务逻辑运算,具体负责保障数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复。 二、数据库的体系架构 数据库内核:对数…

C语言 函数的嵌套与递归 调用

本文 我们来说函数的嵌套调用和递归调用 在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数 函数并不允许嵌套调用,但是 允许在逻辑代码中嵌套调用 所谓函数嵌套调用 就是在一个函数中调用另一个函数,而…

VS编辑器下使用MFC完成研究生管理系统设计

背景: (一)实验目的 通过该实验,使学生掌握windows程序设计的基本方法。掌握学籍管理的基本内容,熟练应用数据库技术和通用组件,实现研究生信息的增、删、改、查功能。通过处理过程对计算机软件系统工作原…

【Linux进程间通信(六)】深入理解 System V IPC

(一)引入 (二)IPC 命名空间 (三)ipc_ips结构体 (四)ipc_id_ary结构体 (五)kern_ipc_perm结构体 (六)操作系统对IPC资源是如何管理…

mybatis:Spring junit 测试报错:Failed to load ApplicationContext

Spring junit 测试报错:Failed to load ApplicationContext 解决方法,修改mybatis版本,版本过高导致无法加载依赖

NVIDIA Omniverse Cloud API支持数字孪生开发,可解决复杂AI问题 | 最新快讯

在全球范围内,价值超过 50 万亿美元的重工业市场,正在竞相实现数字化。 基于此,为帮助数字孪生技术更好地赋能千行百业,AI 企业 NVIDIA 在架构底层算力的同时,也搭建了 NVIDIA AI Enterprise 和 Omniverse 两大平台。 …

PDF转word转ppt软件

下载地址:PDF转word转ppt软件.zip 平时工作生活经常要用到PDF转word转ppt软件,电脑自带的又要开会员啥的很麻烦,现在分享这款软件直接激活就可以免费使用了,超级好用,喜欢的可以下载

【不使用深度学习框架】多层感知机实现手写Minist数据集识别

手写Minist识别是一个非常经典的问题,其数据集共有70000张28*28像素的图片,其中60000张作为训练集,剩下的10000张作为测试集,每一张图片都表示了一个手写数字,经过了灰度处理。 本文延续前面文章提到的多层感知机&…

五一 Llama 3 超级课堂 大完结

首先很感谢上海人工智能实验室和机智流等相关举办单位组织的这个活动,在Llama3发布不多时就让我们可以体验到大模型的进步,回顾整个活动,从内容上看是相当用心的。从A100的提供使用到大模型部署,微调,Agent功能应用和数…

网贷大数据查询要怎么保证准确性?

相信现在不少人都听说过什么是网贷大数据,但还有很多人都会将它跟征信混为一谈,其实两者有本质上的区别,那网贷大数据查询要怎么保证准确性呢?本文将为大家总结几点,感兴趣的朋友不妨去看看。 想要保证网贷大数据查询的准确度&am…

Mamba结构的Demo源码解读

文章目录 前言一、mamba结构构建辅助函数解读1、dataclass方法解读2、Norm归一化LayerNormRMSNormRMSNorm源码 3、nn.Parameter方法解读 二、mamba原理二、mamba模型构建1、主函数入口源码解读2、Mamba类源码解读 三、ResidualBlock的mamba结构源码解读四、MambaBlock构成Resid…

【四、性能测试】性能测试基础与几个重要的概念

你好,我是山茶,一个95后在职程序员。也是一个目标跟 1000 程序员探索出 AI 测试 副业之路的 bro,欢迎跟我一起沟通交流! 一、什么是性能测试? 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来…

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统:Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式: CMake 兼容配置: OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…