MySQL——日志

news2024/11/26 11:42:10

日志的作用
    1.用来排错
    2.用来做数据分析
    3.了解程序的运行情况,是否健康--》了解MySQL的性能,运行情况

分类

mysql很多有类型的日志,按照组件划分的话,可以分为 服务层日志 和 存储引擎层日志 :
- 服务层日志:二进制日志、慢查日志、通用日志
- 存储引擎层日志:innodb(重做日志、回滚日志) 

错误日志

错误日志是默认开启的,名字为 主机名.err

记录:  

登录失败会记录到错误日志
配置文件出错也会记录
启动过程出问题也会记录

如果指定错误日志的路径,主要目的地的目录需要给mysql用户写的权限

通用日志

缺点:消耗大量的磁盘空间;消耗cpu、内存、磁盘资源

优点:会记录所有的SQL操作

通用日志默认是不开启的

开启方式:

永久开启:修改配置文件

#general log
general_log
general_log_file=/data/mysql/sanchuang_mysql_ge.log

默认存放在数据目录下,名字是主机名.log

临时开启:mysql> set global general_log = 1;  1是开启 0 是关闭

慢日志

做优化时用,提升性能

作用:记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索

最近数据库压力(负载特别高),客户反应网站或者应用使用特别慢,领导要求你查明原因?
1.SQL语句需要优化,在数据库里启用慢日志,找出执行时间比较长的SQL
2.业务量太大了,硬件已经达到极限了  ,top、glances、dstat

慢日志默认是关闭的

开启方式:

修改配置文件

存放在数据目录下,名字是主机名+slow.log

二进制日志

参考:https://www.cnblogs.com/liuhaidon/archive/2019/09/09/11493292.html

记录了什么?

DML语句、DDL、DCL等修改了数据的操作 

binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、DELETE、UPDATE…)的二进制日志 

作用

1.可以用来恢复数据

2.主从复制

因为从服务器需要到主服务器里拷贝二进制日志,然后根据二进制日志的内容去执行SQL,从而达到主从服务器里的数据一模一样。 

3.日志审计场景:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击。

MySQL的注入攻击:
    用户(黑客)可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

        在哪里可以提交数据库查询代码?

 二进制日志默认是关闭的

开启方式

修改配置文件

#开启二进制日志
log_bin
server_id = 1

 server_id 是服务器的唯一标识,在主从复制的时候使用,每天服务器的id不能一样,不然会导致主从复制失败

存放的位置:数据目录下 

主机名-bin.00000*
sc-mysql-bin.000001

总结

什么时候会产生二进制日志?

binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。

二进制日志不是存储引擎管理的,是MySQL内部的相关线程去完成。


二进制日志保存下来有2个过程:
flush:将二进制日志写到binlog_buffer里
sync:将binlog_buffer里的内容刷盘到disk里binlog file

二进制的作用:
    1.恢复数据(增量)
    2.主从复制需要使用

二进制日志是如何写到磁盘里的? 

刷盘时机

sync_binlog=0: 表示刷新binlog时间点由操作系统自身来决定,操作系统自身会每隔一段时间就会刷新缓存数据到磁盘,这个性能最好。--》容易丢失数据

sync_binlog=1: 表示每次事务提交都要调用fsync(),刷新binlog写入到磁盘。--》能快速的存储数据,不容易丢失数据

sync_binlog=N: 表示 N个事务提交,才会调用 fsync()进行一次binlog刷新,写入磁盘。

重做日志 redo log

作用:
确保事务的持久性。
防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。解决事务commit不成功,重新redo

内容:
物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。


什么时候产生:
事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。


什么时候释放:
当对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。

对应的物理文件位于数据库的data目录下的ib_logfile1&ib_logfile2

innodb 存储引擎产生的日志:
    redo log:记录的是脏数据的变化--》buffer pool里的
    作用:
        MySQL意外宕机重启也不要紧。只要在重启时解析redo log中的事务而后重做一遍。将Buffer Pool中的缓存页重作成脏页。后续再在合适的时机将该脏页刷入磁盘便可。

    undo log:记录某 数据 被修改 前 的值
    作用:方便回滚 rollback --》相当于做了一个快照(备份)

 先写日志,再写数据

回滚日志 undo log

作用:
保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

内容:
逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。

什么时候产生:
事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性

什么时候释放:
当事务提交之后,undo log并不能立马被删除,
而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间。

对应的物理文件:
MySQL5.6之前,undo表空间位于共享表空间的回滚段中,共享表空间的默认的名称是ibdata,位于数据文件目录中。
MySQL5.6之后,undo表空间可以配置成独立的文件,但是提前需要在配置文件中配置,完成数据库初始化后生效且不可改变undo log文件的个数

到底是先产生undo log还是redo log

先redo,然后undo

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

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

相关文章

数据治理-数据建模和设计

是什么? 数据建模是发现、分析和确定数据需求的过程,用一种称为数据模型的精确形式表示和传递这些数据需求。数据建模是数据管理的一个重要组成部分。建模过程中要求组织发现并记录数据组合的方式。 数据可以采用多种不同的模式来表示,其中最…

【广州华锐互动】电厂三维数字孪生大屏的功能和优势

在工业互联网的背景下,电厂三维数字孪生大屏系统正在逐渐成为电力行业的重要技术。通过创建电厂的虚拟模型,这个数字孪生系统可以实现对实际电厂的实时监控,预测维护需求,优化运营效率,甚至在某些情况下,能…

CrossEntropyLoss() 和 nn.BCEWithLogitsLoss() 举例说明区别

CrossEntropyLoss() 通常用于多分类任务,它接受一个包含类别标签的张量作为目标值,并且假设每个样本只属于一个类别。在多分类任务中,模型的最后一层输出是一个概率分布,表示每个类别的概率。CrossEntropyLoss() 计算模型输出与目…

微信“刷掌支付”上线,扫手就可以付款!你知道怎么开通了吗?

不用扫码!不用刷卡!隔空感应! 刷掌就能支付 没错! 新科技来咯~ 刷 掌 早在今年5月,微信刷掌支付正式面世,目前已应用于交通、健身、校园、零售、餐饮、办公、共享充电等多个场景,如北京地铁…

vue3+ts项目打包后的本地访问

注意:打包之后不可直接点击html访问,需要给项目安装本地服务! 1、安装servenpm i -g serve 2、打包项目npm run build 生成dist文件夹 3、本地访问serve dist 运行service dist之后的控制台 可复制下方的地址运行打包后的项目,运行…

Spring系列文章:Spring中的设计模式

一、简单⼯⼚模式 BeanFactory的getBean()⽅法,通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式(静态⼯⼚模 式); 二、⼯⼚⽅法模式 FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法&a…

英语单词(二)

1.int:整形 2.char:字符型 3.scanner:接受输入,扫描器 4.integer:整数,整形 5.type:类型 6.string:字符串类型 7.double:双精度浮点型

OpenRoads地形模型添加(增补)地形点

创建三维点,将创建的点对象添加到现有地形模型。 在ORD建模工作流: 地形、分析、点、分析点,在需要添加点的位置读出地模的高程(图1); 图1 几何、平面、点添加高程点,特征设为地形随机点、高…

双线性插值以及计算

参考视频:图像处理-双线性插值_哔哩哔哩_bilibili 双线性插值 双线性插值是一种常用的图像处理和计算机图形学技术,用于在离散像素网格上平滑地估算介于两个相邻像素之间的数值。这种插值方法通常用于图像放大、旋转和变换等操作,以改善图像…

操作系统 第二章 进程管理:进程与线程、处理机调度

目录 1.进程与线程 1.1进程的概念、组成、特征 1.1.1概念 1.1.2组成 进程控制块(PCB) 程序段 数据段 1.1.3特征 1.2进程的状态与转换 1.2.1进程的五种状态 1.2.2进程的状态转换 1.3进程控制 1.3.1如何实现原语的“原子性” 1.3.2进程的创建…

intellij debug模式提示 : Method breakpoints may dramatically slow down debugging

最近在搞一个搭建一个项目 , 项目搭建完之后发现启动不了 , 一直都是正在加载中 并且提示Method breakpoints may dramatically slow down debugging,百度之后才知道是打了方法断点的原因 , 之前不小心打了一个断点 解决办法 : 点击如下图所示的按钮 然后把有断点…

15:00面试,15:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

matlab之cell数组的详细用法

一、cell数组是什么? 在MATLAB中,Cell数组是一种特殊的数据结构,它可以存储不同类型的数据,包括数字、字符串、数组、结构体等。Cell数组是一种灵活的数据容器,可以方便地存储和处理不同类型的数据。 二、怎么使用ce…

算法通关村第十八关:白银挑战-回溯热门问题

白银挑战-回溯热门问题 回溯主要解决一些暴力枚举也搞不定的问题zh,例如组合、分割、子集、排列、棋盘等。 1. 组合总和问题 LeetCode39 https://leetcode.cn/problems/combination-sum/ 思路分析 如果不考虑重复,跟题目 LeetCode 113 类似 考虑重复…

Autowired members must be defined in valid Spring bean (@Component|@Service|…)

报错如下: 自动注入对象必须定义在有效的spring bean内,也就是说只有本身作为bean的类才能注入其他对象。 修正方法:在BookTest上加上Component注解

基于STM32F103 实现按键状态机

文章目录 开发板开发环境前言按键消抖按键硬件原理图软件延时实现思路 实验目的代码按键状态按键信息按键相关定义按键底层配置及状态获取 总结 开发板 正点原子STM32F103ZET6战舰 开发环境 stm32cubeMX Clion 前言 在单片机使用按键时,为了消除按键的抖动&…

【随想】每日两题Day.3(实则一题)

题目:59.螺旋矩阵|| 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: …

Python进阶方法-Decorator装饰器

前言 在Python中,decorator(装饰器)是一种特殊的函数,主要用于修改或增强其他函数的功能。它可以在不修改原函数代码的情况下,通过在原函数的定义之前使用语法糖来对其进行修饰。 Decorator装饰器的作用 Decorator的…

端口信息收集

一、服务端口介绍 在渗透测试中对服务端口的收集非常重要,通过扫描服务开放的端口可判断对应开启的服务,通过所提供的这些服务的已知漏洞就可进行攻击。知名端口(0-1023)固定分配给某些服务的,动态端口(10…