当前位置:网站首页>简单聊聊MySQL中的六种日志
简单聊聊MySQL中的六种日志
2022-08-02 22:51:00 【Trouvailless】
(一)概述
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是否开启以及日志的位置。
general log 可通过配置文件启动,配置参数如下:
general_log = on
general_log_file = /usr/local/mysql/mysql-8.0.20/data/hecs-78422.log
复制代码
普通查询日志会记录增删改查的信息,因此一般是关闭的。
边栏推荐
猜你喜欢
js基础知识整理之 —— 变量和数据类型
Week 7 CNN Architectures - LeNet-5、AlexNet、VGGNet、GoogLeNet、ResNet
科研用Cholesterol-PEG-NHS,NHS-PEG-CLS,胆固醇-聚乙二醇-活性酯
合并两个excel表格工具
Towards a General Purpose CNN for Long Range Dependencies in ND
Shunted Self-Attention via Multi-Scale Token Aggregation
2022暑假牛客多校1 (A/G/D/I)
聚乙二醇衍生物4-Arm PEG-DSPE,四臂-聚乙二醇-磷脂
CWE4.8:2022年危害最大的25种软件安全问题
MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
随机推荐
了解 NFT 质押:Web3 中赚取被动收益的另一种方式
IDO代币预售合约系统开发技术详细
Nlog自定义时间
APT level comprehensive free kill with Shell
2022中国眼博会,山东眼健康展,视力矫正仪器展,护眼产品展
Week 7 - Distributional Representations
如何使用vlookup+excel数组公式 完成逆向查找?
FastCorrect:语音识别快速纠错模型丨RTC Dev Meetup
工业元宇宙的价值和发展
Kubernetes 进阶训练营 网络
语音合成模型小抄(1)
最近公共祖先(LCA)学习笔记 | P3379 【模板】最近公共祖先(LCA)题解
NLP常用Backbone模型小抄(1)
Towards a General Purpose CNN for Long Range Dependencies in ND
centos7安装mysql8
CTF命令执行题目解题思路
centos7安装mysql5.7
resubmit 渐进式防重复提交框架简介
用了 TCP 协议,数据一定不会丢吗?
【斯坦福计网CS144项目】Lab5: NetworkInterface