浅谈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之DML语言
Apr 05 MySQL
教你用eclipse连接mysql数据库
Apr 22 MySQL
教你解决往mysql数据库中存入汉字报错的方法
May 06 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
MySQL开启事务的方式
Jun 26 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
mysql数据库实现设置字段长度
Jun 10 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新手谈谈我的学习心得
2007/02/25 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
js三种排序算法分享
2012/08/16 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
在Python中marshal对象序列化的相关知识
2015/07/01 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python 列表反转显示的四种方法
2020/11/16 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
一份Java笔试题
2012/02/21 面试题
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
农业大学毕业生的个人自我评价
2013/10/11 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
普通党员个人整改措施
2014/10/27 职场文书
2015年端午节活动方案
2015/05/05 职场文书
律师函格式范本
2015/05/27 职场文书
志愿服务心得体会
2016/01/15 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS