简单聊聊MySQL中的六种日志
(一)概述
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
普通查询日志会记录增删改查的信息,因此一般是关闭的。
简单聊聊MySQL中的六种日志相关推荐
- MySQL 中的重做日志,回滚日志以及二进制日志的简单总结
转载自 MySQL 中的重做日志,回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志 ...
- MySQL中常见的日志文件
日志文件记录了影响MySQL数据库的各种类型活动.MySQL中常见的日志文件有: 错误日志(error log) 二进制日志(binlog) 慢查询日志(slow query log) 查询日志(lo ...
- MySQL中的通用查询日志(General Query Log)
MySQL中的通用查询日志(General Query Log) 1. 以什么形式来记录? log_output系统变量来决定的,可选值 TABLE, FILE, 或者 NONE,默认值是FILE,可 ...
- MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结...
MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...
- MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结
前言 1. ''最近公司大佬让我优化sql的时候,说可以通过控制where条件,尽可能的少的较少数据库的开支,少生成一些无用的binlog.由此引出binlog这个概念,大家一起学习一下 关于Binl ...
- jsp页面判断输入编号已存在mysql中_面试官让我聊聊Mysql基础架构之日志文件与数据文件...
上一篇文章讲述了Mysql的基本框架,和sql执行的流程,这篇文章首先分析下每个流程的具体细节,然后介绍日志文件和数据文件以下面语句作为例子来分析流程中每一步的具体细节: select * from ...
- mysql 表空间收缩_【135期】谈谈MySQL中的重做日志,回滚日志,以及二进制日志的区别及各自作用...
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...
- mysql重做日志与binlog日志区别_【135期】谈谈MySQL中的重做日志,回滚日志,以及二进制日志的区别及各自作用...
MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...
- 聊聊MySQL中的锁
原文地址:http://www.linzichen.cn/article/1571531799593484288 在程序开发中,当多个线程并发操作共享数据时,我们需要保证在任何时刻最多只能有一个线程在 ...
最新文章
- linux错误说未声明,如何在Linux 32位计算机上解决REG_EIP未声明(在此函数中首次使用)错误?...
- Javascript UserAgent 获取平台及浏览器信息
- SpringBoot学习笔记(2) Spring Boot的一些配置
- 魔术方法 :__callStatic( )实例详解
- 尝试在Community Server中添加一个页面
- 【技术】Java打印菱形
- 实现应用于AlphaGo得增强式学习算法,代码实现1
- editorloop 占用_【交换机在江湖-维护无忧系列】CPU占用率高故障专题(3)-常见故障案例...
- 基于遗传算法的柔性流水车间调度设计与实现(论文+源码+答辩ppt)
- 软件测试用例设计(最全软件测试干货!)
- css水波纹-雷达扩散效果
- JAVA POI EXCEL导出工具方法 支持冻结列行和设置不可编辑整行整列
- 360智力测试题(2014版)
- 车载BlueTooth通话机制原理及开发
- shell入门之expr的使用
- linux 命令行下的复制和黏贴
- Excel去掉函数错误值#VALUE!的方法
- 流程图的制作技巧分享,手把手教你如何绘制流程图
- emqttd 2.2安装和测试使用
- Msfvenom编码免杀技术实现免杀实战
热门文章
- python设计模式(一)创建型模式
- IBMV7000存储电源模块PSU报错“Power Supply Fault type 2“
- design compiler基本操作
- 微信小程序跳转公众号(引导关注)之 使用公众号消息
- CPT101计算机系统概念
- 互联网线下活动一周整理 11月23日—29日
- Word中 mytype公式编辑器编辑的公式与文字不对齐,偏上的问题
- python统计字符串字符出现次数
- 网络语言c三个字猫头鹰,在线语言学习平台 多邻国(Duolingo)更新猫头鹰图标...
- sudo日志文件跟踪