MySQL学习笔记10——日志

日志

  • 一、日志
    • 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.mzph.cn/news/833673.shtml

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

相关文章

Ansible-Playbook——部署LNMP架构

目录 环境准备 一、配置Nginx的Roles角色 1.创建Nginx所需的文件夹 2.编写Nginx配置文件 3.编写Nginx安装文件 4.编写Nginx控制器文件 5.编写Nginx任务文件 6.编写Nginx变量文件 二、配置Mysql的Roles角色 1.创建Mysql所需的文件夹 2.编写Mysql启动文件 3.编写Mysql…

源码部署与SaaS账号:企业软件选择的自建房与租赁公寓之辩

在数字化运营的时代,企业选择软件解决方案就如同在选择住所:源码部署类似于“自建房屋”,而SaaS账号则更像是“租赁公寓”。 自建房屋(源码部署) 当你选择自建房屋时,你需要投入大量的时间和资金来购买土地…

二叉树遍历总结

7.二叉树 二叉树理论基础 二叉树的种类 在我们解题过程中二叉树有两种主要的形式:满二叉树和完全二叉树。 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 C中map、set、multimap,multiset的底层实现都是平衡二叉搜索树,所以map、set的增…

实现左上角的固定视口但是网格以图片中心放大缩小

仅仅修改了showbk() 函数部分,增加bkv4 直接采样,然后粘贴到左上角,实现多余部分裁剪,形成视口内放大缩小 // 程序:2D RPG 地图编辑器与摄像机追随 // 作者:bilibili 民用级脑的研发…

C语言(指针)1

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

【操作系统】内存管理——地址空间连续内存分配与非连续内存分配

内存管理——地址空间&连续内存分配与非连续内存分配 一、地址空间1.1 计算机存储层次1.2 地址和地址空间1.3 虚拟存储的作用 二、内存分配2.1 静态内存分配2.2 动态内存分配 三、连续内存分配3.1 动态分区分配3.2 伙伴系统(Buddy System) 四、非连续…

深入浅出(五)JsonCpp库

JsonCpp库 1. JsonCpp 库1.1 JsonCpp库下载 2. JsonCpp库编译与部署3. C示例 1. JsonCpp 库 JsonCpp 是一个开源的 C 库,用于解析、生成和操作 JSON 数据。它提供了简单易用的 API,使得在 C 程序中处理 JSON 数据变得方便和高效。以下是 JsonCpp 库的一…

适合宝妈的项目,一单20,看似不起眼的小生意,却能闷声发财!

向大家推荐一个小项目,信息差较大,每单至少有20元的利润。目前参与的人还不多,是个不错的机会。操作方法也非常简单,只需利用京东家政券赚取差价。可能很多人是第一次了解到这个——京东竟然还有家政券。 周周近财:让…

Android11 InputReader分析

InputReader线程主要负责读取输入数据,并把数据交给InputDispatcher线程。本文以多指触摸屏为例,梳理一下InputReader的流程。 InputReader线程主要完成以下工作: 处理已有的输入设备处理新增或者移除的输入设备对输入设备产生的输入数据进行…

数字工厂管理系统如何实现生产过程透明化

随着科技的飞速发展,数字化转型已成为制造业不可逆转的趋势。数字工厂管理系统作为实现生产自动化、智能化的重要工具,其在提升生产效率、降低运营成本、优化资源配置等方面的作用日益凸显。其中,实现生产过程的透明化是数字工厂管理系统的重…

一文彻底学会Vue3路由:全面讲解路由流程、路由模式、传参等——全栈开发之路--前端篇(7)路由详解

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

数据中台:企业数字化转型的驱动力量_光点科技

在当今数字化快速发展的时代,企业正积极寻求转型升级的新路径。在这个过程中,数据中台以其独特的功能和价值,逐渐成为了企业数字化转型的关键驱动力。本文将深入探讨数据中台的角色、架构及其在企业中的应用,以期为企业的数字化转…

01-基本概念- 索引,文档和 REST API

# kibana_sample_data_ecommerce 为es 索引#查看索引相关信息 GET kibana_sample_data_ecommerce#查看索引的文档总数 GET kibana_sample_data_ecommerce/_count#查看前10条文档,了解文档格式 POST kibana_sample_data_ecommerce/_search { }#_cat indices API #查看…

论文查重率高,有什么办法降重吗?

现在大部分学校已经进入到论文查重降重的阶段了。如果查重率居高不下,延毕的威胁可能就在眼前。对于即将告别校园的学子们,这无疑是个噩梦。四年磨一剑,谁也不想在最后关头功亏一篑。 查重率过高,无非以下两种原因。要么是作为“…

CRM(客户关系管理系统)

商机流程 为什么选择简道云CRM? 行业痛点 很多客户有复杂的订单成本计算方式,复杂多变的审批流程,个性化/流程化的数据结构,没有自定义能力就很难满足。 解决方案 在CRM套件的基础上自定义编辑/搭建了适合公司业务的CRMERP 两…

PCIE协议-2-事务层规范

1.事务层概述 从高层次上看,事务层的关键方面包括: 一个流水线化的全分割事务协议用于区分事务层数据包(TLPs)的排序和处理要求的机制基于信用量的流控制可选支持数据中毒和端到端数据完整性检测 事务层包含以下内容&#xff1…

Axure RP 9:卓越的交互式产品原型设计工具

Axure RP 9,作为一款备受欢迎的交互式产品原型设计工具,已经在全球范围内赢得了众多设计师和开发者的青睐。这款软件凭借其强大的功能和出色的用户体验,成为了产品原型设计领域的佼佼者。 Axure RP 9支持Mac和Windows两大操作系统&#xff0…

茅台申购,多平台签到与通知 | 使用极空间NAS部署一个神级脚本『DailyCheckIn』

茅台申购,多平台签到与通知 | 使用极空间NAS部署一个神级脚本『DailyCheckIn』 哈喽小伙伴们好,我是Stark-C~,今天为大家分享一个极空间上非常实用且好玩的项目。 小伙伴们都知道,目前很多平台为了促进用户的活跃度和黏性&#…

LeetCode--所有质数、质数对

1.0 Q: 输出 100 以内所有质数 1.1 /* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数 */boolean isPrime true;for (int i 2; i < 100…

如何彻底将CAD或者Cadence卸载干净

最近因为升级软件需要先彻底删除这两个软件&#xff0c;发现无论如何都不能卸载干净&#xff0c;于是乎找到这样一个软件帮助卸载或查找剩余的软件残留&#xff1a; 官网&#xff1a;https://geekuninstaller.com 支持软件和 UWP 应用的卸载&#xff0c;查看软件注册表和安装目…