浅谈MySQL中的六种日志


Posted in MySQL onMarch 23, 2022

(一)概述

MySQL中存在着以下几种日志:重写日志(redo log)、回滚日志(undo log)、二进制日志(bin log)、错误日志(error log)、慢查询日志(slow query log)、一般查询日志(general log)。

MySQL中的数据变化会体现在上面这些日志中,比如事务操作会体现在redo log、undo log以及bin log中,数据的增删改查会体现在 binlog 中。本章是对MySQL日志文件的概念及基本使用介绍,不涉及底层内容。针对开发人员而言,这几种日志中最有可能使用到的是慢查询日志。

(二)redo log

redo log是一种基于磁盘的数据结构,用来在MySQL宕机情况下将不完整的事务执行数据纠正,redo日志记录事务执行后的状态。

当事务开始后,redo log就开始产生,并且随着事务的执行不断写入redo log file中。redo log file中记录了xxx页做了xx修改的信息,我们都知道数据库的更新操作会在内存中先执行,最后刷入磁盘。

redo log就是为了恢复更新了内存但是由于宕机等原因没有刷入磁盘中的那部分数据。

(三)undo log

undo log主要用来回滚到某一个版本,是一种逻辑日志。undo log记录的是修改之前的数据,比如:当delete一条记录时,undolog中会记录一条对应的insert记录,从而保证能恢复到数据修改之前。在执行事务回滚的时候,就可以通过undo log中的记录内容并以此进行回滚。

undo log还可以提供多版本并发控制下的读取(MVCC)。

(四)bin log

MySQL的bin log日志是用来记录MySQL中增删改时的记录日志。简单来讲,就是当你的一条sql操作对数据库中的内容进行了更新,就会增加一条bin log日志。查询操作不会记录到bin log中。bin log最大的用处就是进行主从复制,以及数据库的恢复。

通过下面的命令可以查看是否开启binlog日志

show VARIABLES like '%log_bin%'

开启binlog的方式如下:

log-bin=mysql-bin
server-id=1
binlog_format=ROW

其中log-bin指定日志文件的名称,默认会放到数据库目录下,可通过以下命令查看

show VARIABLES like '%datadir%'

(五)error log

error log主要记录MySQL在启动、关闭或者运行过程中的错误信息,在MySQL的配置文件my.cnf中,可以通过log-error=/var/log/mysqld.log 执行mysql错误日志的位置。

通过MySQL的命令

show variables like "%log_error%";

也可以获取到错误日志的位置。

(六)slow query log

慢查询日志用来记录执行时间超过指定阈值的SQL语句,慢查询日志往往用于优化生产环境的SQL语句。可以通过以下语句查看慢查询日志是否开启以及日志的位置:

show variables like "%slow_query%";

慢查询日志的常用配置参数如下:

slow_query_log=1  #是否开启慢查询日志,0关闭,1开启
slow_query_log_file=/usr/local/mysql/mysql-8.0.20/data/slow-log.log  #慢查询日志地址(5.6及以上版本)
long_query_time=1 #慢查询日志阈值,指超过阈值时间的SQL会被记录
log_queries_not_using_indexes  #表示未走索引的SQL也会被记录

分析慢查询日志一般会用专门的日志分析工具。找出慢SQL后可以通过explain关键字进行SQL分析,找出慢的原因。

(七)general log

general log 记录了客户端连接信息以及执行的SQL语句信息,通过MySQL的命令

show variables like '%general_log%';

可以查看general log是否开启以及日志的位置。

浅谈MySQL中的六种日志

general log 可通过配置文件启动,配置参数如下:

general_log = on
general_log_file = /usr/local/mysql/mysql-8.0.20/data/hecs-78422.log

普通查询日志会记录增删改查的信息,因此一般是关闭的。

到此这篇关于浅谈MySQL中的六种日志的文章就介绍到这了,更多相关MySQL 日志内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql知识点整理
Apr 05 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
MySQL update set 和 and的区别
May 08 MySQL
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
Mysql数据库值的添加、修改、删除及清空操作实例
Jun 20 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
实战 快速定位MySQL的慢SQL
关于MySQL临时表为什么可以重名的问题
将MySQL的表数据全量导入clichhouse库中
Mar 21 #MySQL
MySQL分区表管理命令汇总
Mar 21 #MySQL
Linux系统下MySQL配置主从分离的步骤
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 #MySQL
You might like
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
php调用C代码的实现方法
2014/03/11 PHP
基于PHP制作验证码
2016/10/12 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
NumPy排序的实现
2020/01/21 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python中提高pip install速度
2020/02/14 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
可贵的沉默教学反思
2014/02/06 职场文书
六年级学生评语
2014/04/22 职场文书
工作证明格式及范本
2014/09/12 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
创业计划书之宠物店
2019/09/19 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
入门学习Go的基本语法
2021/07/07 Golang