参考文章:

https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html

https://dev.mysql.com/doc/refman/5.7/en/server-logs.html

以下实验皆来自于MYSQL 5.7.20 版本。

MySQL中有以下几种日志文件,

分别是:重做日志(redo log)、撤销日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log),DDL日志(元数据日志)

MySQL Server中有如下几种日志:

日志类型 写入日志的信息
错误日志(errorlog) 启动,运行或停止时遇到问题
一般查询日志(general log) 已 Build 的客户端连接和从客户端收到的语句
二进制日志(binlog) 更改数据的语句(也用于复制)
中继日志(relay log) 从复制主服务器收到的数据更改
慢查询日志(slow query log) 执行时间超过_574558秒的查询
DDL日志(元数据日志) 由DDL语句执行的元数据操作

Inno中有如下几种日志:

日志类型  写入日志的信息
重做日志(redo log ) 通常是物理日志,记录的是数据页的物理修改
撤销日志(undo log)

记录了老版本的数据

首先我们说下server中的日志:

错误日志(errorlog)

是什么?

来自官方文档

如上图:错误日志包含 mysqld 启动和关闭时间的记录。它还包含诊断消息,例如在服务器启动和关闭期间以及服务器运行时发生的错误,警告和注释。如果 mysqld 注意到需要自动检查或修复表,则会将消息写入错误日志。

首先我们要知道的是,错误日志在5.7.20版本中会默认打开,若使用windows系统,则错误日志文件在data下的 当前主机名.err  中。

错误日志内容:

 

错误日志包含mysql启动和关闭的时间,以及mysql启动,关闭,运行中的错误、警告、注释信息。

错误日志如何更改日志路径?

由于我的系统是windows系统,所以我的配置方式是 在my.ini中增加:

log-error=E:/software/tool/environment/mysql/5.7.20/mysql-5.7.20-winx64/logs/error_mysql.err

配置完成之后需要重启mysql服务才能生效。按照官方文档的内容,先尝试下登录的报错信息会不会存储在这里。(注意下执行时间点是16.25分)

然后通过命令: show variables like 'log_error'; 查询error的存储地址

看下具体存储的内容是:

这个时候忽然发现,这个时间好像有点问题

来自官方文档

果然 “log_timestamps” 是5.7.2版本新增的参数,默认使用时间为UTC(世界标准时间),我们一般而言使用的是北京时间(东八区),领先UTC八个小时。

“log_timestamps”参数控制错误日志(error_log)、一般查询日志(general query log)、慢日志(slow query log)写入文件的时间戳,但是不影响一般查询日志(general query log)、慢日志(slow query log)写入表的时间戳

那么他修改为北京时间的方式(永久生效方式)为:在my.ini文件中增加  log_timestamps=SYSTEM 然后重启mysql服务即可

一般查询日志(general log)

是什么

通用查询日志是mysqld正在执行的操作的一般记录 。当客户端连接或断开连接时,服务器会将信息写入此日志,并记录从客户端收到的每个SQL语句。当您怀疑客户端中存在错误并想要确切知道客户端发送给mysqld的内容时,通用查询日志非常有用。

可以通过 以下的语句查询一般查询日志的信息,是否开启以及一般查询日志的位置。

show variables like 'general_log%'

默认情况下,general_log  是关闭的。开启会记录所有的sql,对服务器的性能上压力很大。在分析sql性能问题上,短时间内打开 general_log 获取sql执行状况还是有帮助的。

如何开启

一般查询日志重要的参数有有三个:

  general_log

     该参数为一般查询日志是否打开,

    打开方式:在my.ini文件中配置

general_log=ON

  如果不想重启mysql的话,也可以使用

SET GLOBAL general_log=ON 

   general_log_file

   该参数为一般查询日志的保存路径。

  log_output    启用常规查询日志后,服务器会将输出写入log_output系统变量指定的任何目标 。

  该参数其值是列表中选择的一个或多个逗号分隔的单词TABLE(从日志到表), FILE(记录到文件)或 NONE(不记录到表或文件)。 NONE,如果存在,则优先于任何其他说明符。(默认值为FILE)

  日志表是默认创建好了的,有两个:

SHOW CREATE TABLE mysql.general_log; --一般查询日志
SHOW CREATE TABLE mysql.slow_log; --慢日志

慢查询日志(slow query log)

是什么

慢查询日志由执行时间超过几秒的SQL语句组成, 并且至少需要检查几行。获取初始锁定的时间不计入执行时间。mysql在执行完后以及释放所有锁之后向慢查询日志写入一个语句,因此日志顺序可能与执行顺序不同。

慢查询日志参数

  long_query_time(最长查询时间):最小值和默认值是0和10.该值可以指定为微秒的分辨率。默认值是10,目前我们线上设置的是0.1

  min_examined_row_limit(最小检查行数):默认值为0

  slow_query_log(慢日志是否开启):默认OFF

  slow_query_log_file(慢日志的保存文件):默认在data文件夹下

服务器按以下顺序使用控制参数来确定是否将查询写入慢查询日志:

  1. 查询必须不是管理语句,或者 log_slow_admin_statements 必须启用。

  2. 查询必须至少花费 long_query_time几秒钟,或者 log_queries_not_using_indexes(是否将不使用索引的查询记录到慢查询日志中) 必须启用,并且查询不使用行查找的索引。

  3. 查询必须至少检查过 min_examined_row_limit 行。

  4. 不得根据log_throttle_queries_not_using_indexes 设置禁止查询 。

重做日志(redo log)、撤销日志(undo log)后期补充

暂时说到这里。

[MySQL实战-Mysql基础篇]-mysql的日志的更多相关文章

  1. Docker虚拟化实战学习——基础篇(转)

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  2. mysql基础篇-----mysql简介

    2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...

  3. mysql之存储过程基础篇

    1.  创建/使用数据库 mysql> create database me; mysql> use me; 2.  创建表 mysql> create table Stu(Sno ...

  4. mysql实战优化之四:mysql索引优化

    0. 使用SQL提示 用户可以使用use index.ignore index.force index等SQL提示来进行选择SQL的执行计划. 1.支持多种过滤条件 2.避免多个范围条件 应尽量避免在 ...

  5. [MySQL实战-Mysql基础篇]-mysql架构

    1.基本组成 下面是mysql的基本架构示意图  图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...

  6. MySQL实战45讲学习笔记:日志系统(第二讲)

    一.重要的日志模块:redo log 1.通过酒店掌柜记账思路刨析redo log工作原理 2.InnoDB 的 redo log 是固定大小的 只要赊账记录在了粉板上或写了账本上,之后即使掌柜忘记了 ...

  7. PHP訪问MySql数据库 0基础篇

    在站点后台,常常要与数据库打交道.本文介绍怎样使用XAMPP来管理MySql数据库及怎样用PHP来訪问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  8. JavaSE基础篇—MySQL基础知识点

    MySQL MySQL是一种关系数据库管理系统,是一种开源软件.可搭配PHP和Apache可以有更好的性能,也可以工作在众多的平台上.Orcale是一个数据库创建多个用户,MySQL是一个用户创建多个 ...

  9. 重新整理 mysql 基础篇————— mysql 事务[三]

    前言 简单整理一下事务. 正文 事务有四大特性: 1.原子性(atomicity) 一个事务必须被视为一个不可分割的最小单元. 2.一致性(consistency) 数据库总是从一个一致性的状态转换到 ...

随机推荐

  1. SpringCloud升级之路2020.0.x版-33. 实现重试、断路器以及线程隔离源码

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面两节,我们梳理了实现 Feign 断路器以及线程隔离的思路,并说明了如何优化目前的负 ...

  2. AsExpandable EF多条件查询

    我个人学习新技术有一个方法,如果遇到问题会根据以前的经验来寻找一些类似的解决方法.有人会说,如果这个问题在你的学习或者工作生涯中都没有遇到过呢?很简单,通过搜索资料或查阅相关书籍学习别人的经验. 在如 ...

  3. [loj3500]矩阵游戏

    为了方便,令$a_{i,j}$的下标范围为$[0,n]$和$[0,m]$,$b_{i,j}$的下标范围为$[1,n]$和$[1,m]$ 当确定$a_{i,0}$和$a_{0,j}$后,即可通过$b_{ ...

  4. 史上最俗的MODBUS介绍

    如今网购正深深地改变着人们的生活,以前买东西要逛商场,先找楼层导购,再逛到相应柜台,接着愉快购物,选好东西后经过一番讨价还价,最后付钱拿货走人,这些都是稀松平常的场景.可是,如果没有实际看见东西,只在 ...

  5. 使用 FairyGUI 0代码实现游戏界面左右切换

    制作原因:项目中需要实现主界面中五个界面左右切换,包含点击切换和滑动切换,并且点击和滑动都需要关联表现,原先项目使用ugui实现该效果,代码量大,容易出问题,不好管控,使用FGUI后不需一行代码即可相 ...

  6. Kubernetes Pod 全面知识

    Pod 是在 Kubernetes 中创建和管理的.最小的可部署的计算单元,是最重要的对象之一.一个 Pod 中包含一个或多个容器,这些容器在 Pod 中能够共享网络.存储等环境. 学习 Kubern ...

  7. Java培训班4个月有用吗?

    很多想学Java都会经历这样一个选择,是自学还是报班?自学的话需要一步步摸索,从无到有硬啃下来,时间没保证:可如果报班的话,目前市面上五花八门的培训机构又是鱼龙混杂,并且现在越来越多的培训机构宣称&q ...

  8. stat命令的实现-mysate(必做)

    学习使用stat(1),并用C语言实现 1. 提交学习stat(1)的截图 使用 man 1 stat 查看帮助手册 从图中可以看到stat的用法是display file or file syste ...

  9. [linux] 常用命令及参数-2

    sort 1 sort是把结果输出到标准输出,因此需要输出重定向将结果写入文件 2 sort seq.txt > file.txt 3 sort -u seq.txt 输出去重重复后的行 4 s ...

  10. R语言与医学统计图形-【24】ggplot位置调整函数

    ggplot2绘图系统--位置调整函数 可以参数position来调整,也有专门的函数position_*系列来设置. 位置函数汇总: 1.排列 并排排列 mean <- runif(12,1, ...