MySQL日志分析

一、MySQL日志简介

(一)、mysql日志的种类,一般来说,日志有五种,分别为:

  1. 错误日志:log_error (记录启动,运行,停止mysql时出现的信息)
  2. 二进制日志:log_bin (记录所有更改数据的语句,还用于复制,恢复数据库用)
  3. 通用查询日志:general_log (记录建立的客户端连接和执行的语句)
  4. 慢查询日志: log_slow_queries (记录所有执行超过long_query_time秒的所有查询)
  5. 更新日志: log_update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)

(二)、 查询当前日志记录的状况:

  1. mysql>show variables like ‘%log%’;(查看是否启用了日志)
  2. mysql> show master status;(怎样知道当前的日志)
  3. mysql> show master logs;(显示二进制日志的数目)

(三)、MySQL日志状态图示

  1. 错误日志(默认开启)

在这里插入图片描述

  1. 二进制日志

在这里插入图片描述

  1. 通用查询日志

在这里插入图片描述

  1. 慢查询日志

在这里插入图片描述

二、MySQL日志分类

(一)、错误日志

  1. 说明:错误日志默认是启用的,一般存放在数据目录下,如无特别指定,默认以 $HOSTNAME.err 为文件名称。错误日志中除了记录错误相关的信息之外,默认还记录 MySQL 初始化、启动和关闭过程中输出的信息(未必是错误信息)、event scheduler 运行时所产生的信息、主从架构中的从 I/O Thread 的信息,还包括服务器运行过程中所发生的任何严重的错误信息。通常,当数据库出现问题不能正常启动,应当首先想到的就是查看错误日志。从中可以看到此日志文件记录的MySQL数据库启动和关闭信息。

  2. –log-error=[file-name]用来指定错误日志存放的位置。
      如果没有指定[file-name],默认hostname.err(hostname为主机名)做为文件名,默认存放在DATADIR目录中。也可以将log-error配置到my.cnf文件中,这样可省去每次启动mysqld时都手工指定–log-error.

     在mysql配置文件my.ini中添加:log-error = D:\ProgramFiles\MySQL\mysqld.err如果执行了FLUSH LOGS,错误日志文件将被命名为后缀old文件,并且会创建一个新的空文件。错误日志文件的格式:时间  [错误级别]  错误信息
    
  3. MySQL客户端可以通过下列方法来获取错误日志的详细位置:

    mysql> show variables like ‘log_error’;
    ±---------------------±------------------------------------------------------+
    | Variable_name | Value                |
    ±---------------------±------------------------------------------------------+
    | log_error    | D:\ProgramFiles\MySQL\Data\jevo.err |
    ±----------------------±-----------------------------------------------------+

    1 row in set (0.00 sec)

  4. 错误日志-记录级别

    错误日志文件的记录级别:错误日志有3个level等级:error、warning 和information。
    

(二)、二进制日志

  1. 二进制日志主要用来记录操作MySQL数据库中的写入性操作(增删改,但不包括查询),相当于sqlserver中的完整恢复模式下的事务日志文件。

  2. 二进制日志的作用:1、用于复制,配置了主从复制的时候,主服务器会将其产生的二进制日志发送到slave端,slave端会利用这个二进制日志的信息在本地重做,实现主从同步。2、用户恢复,MySQL可以在全备和差异备份的基础上,利用二进制日志进行基于时间点或者事物Id的恢复操作。原理雷同于主从复制的日志重做。

  3. 开启二进制日志:开启二进制日志需要指定一个log-bin参数的路径,比如:log_bin="D:\phpStudy\MySQL\mysql_log\log_bin"。开始二进制日志之后会自动生成一个管理二进制日志的log_bin_index文件。log_bin选项也显示为on,即开启了二进制日志。

  4. MySQL客户端可以通过下列方法来获取二进制日志的详细位置:

    mysql> show variables like ‘log_bin’;
    ±---------------------±----------------+
    | Variable_name | Value    |
    ±---------------------±-----------------+
    | log_bin    | ON    |
    ±----------------------±----------------+
    1 row in set (0.00 sec)

(三)、通用查询日志

  1. 通用查询日志主要记录建立的客户端连接和执行的语句,MySQL中的参数general_log用来控制开启、关闭MySQL查询日志,参数general_log_file用来控制查询日志的位置。所以如果你要判断MySQL数据库是否开启了查询日志,可以使用下面命令。general_log为ON表示开启查询日志,OFF表示关闭查询日志。
  2. 开启查询日志-在my.ini(windows系统)或my.cnf(linux系统)中添加一下内容:
		#通用查询日志-开启general_log=on#通用查询日志-日志存储目录general_log_file="D:\phpStudy\MySQL\mysql_log\general_log.log"
  1. MySQL客户端可以通过下列方法来获取查询日志的详细位置
    mysql> show variables like ‘%general_log%’;
    ±--------------------±---------------------------------------+
    | Variable_name | Value            |
    ±---------------------±--------------------------------------+
    | general_log  | ON           |
    | general_log_file | /var/lib/mysql/DB-Server.log |
    ±----------------------±--------------------------------------+
    2 rows in set (0.00 sec)

(四)、慢查询日志

  1. MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

  2. 慢查询设置的相关参数

    slow_query_log    :是否开启慢查询日志,1表示开启,0表示关闭。
    log-slow-queries  :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
    slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
    long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。
    log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
    log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。
    log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。
    
  3. 注意:找到mysql的安装目录,找到my.ini文件夹在[mysqld]处加入以下代码开启慢查询,永久有效。

    #开启慢查询
    slow_query_log = ON
    #log-slow-queries:代表MYSQL慢查询的日志存储目录,此目录文件一定要有写权限;
    #最长执行时间 (查询的最长时间,超过了这个时间则记录到日志中) .
    long_query_time = 5
    #慢查询日志存储方式
    log_output='FILE'
    log-slow-queries="C:/Program Files (x86)/MySQL/MySQL Server 5.0/log/mysql-slow.log"
    #没有使用到索引的查询也将被记录在日志中
    log-queries-not-using-indexes = ON
    

三、修改MySQL配置参数-日志参数

(一)、动态修改(临时修改,重启失效)

  1. 说明:静态变量不能修改,但是可以修改全局变量。
  2. 通用查询日志
	#临时开启通用查询日志mysql > set global general_log=on;#临时设置通用查询日志文件目录mysql > set global general_log_file='/tmp/mariadb_general_log.log';#临时关闭通用查询日志mysql > set global general_log=off;#把日志直接存放到表里面mysql > set global log_output='table';
  1. 慢查询日志
	#临时开启慢查询日志mysql> set global slow_query_log='ON'; #或mysql> set global slow_query_log=1;#查询超过4秒就记录mysql> set global long_query_time=4;#设置慢查询日志存放的位置mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';	

(二)、永久修改

1、说明
  在配置文件中(my.ini或my.cnf)添加配置信息后,重启MySQL后就是永久修改,永久生效。直到再次修改配置信息并重启MySQL为止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[优先队列] 洛谷 P1631 序列合并

题目描述 有两个长度都是N的序列A和B,在A和B中各取一个数相加可以得到N^2N2个和,求这N^2N2个和中最小的N个。 输入输出格式 输入格式: 第一行一个正整数N; 第二行N个整数A_iAi​, 满足A_i\le A_{i1}Ai​≤Ai1​且A_i\le 10^9Ai​≤…

图论算法(三)--最短路径 的Bellman-Flod [ 带负权值图 ] 的解法(JAVA )

Bellman-Flod算法 对于带有负权值的图,我们已经不能通过Dijkstra算法进行求解了 原因:Dijkstra每次都会找一个距源点(设为s)最近的点,然后将该距离定为这个点到源点的最短路径;如果一个顶点u被加入了book…

SpringCloud介绍(一)

1.1 SpringCloud介绍 1.1.1 微服务架构演化 简而言之,微服务就是开发一组小型服务的方式来开发一个独立的应用系统,每个小型服务都运行在自己的进程中,并采用HTTP资源API轻量级的机制来互相通信。这些服务围绕业务功能进行构建&…

最短路径问题总结,时间复杂度,空间复杂度对比(JAVA)

最短路径问题总结 图中还有些地方没有完善,但是一时也没没办法解决,希望大家知道的能够提供一下表中不足的地方,万分感谢!!! 最短路径算法(一)–DFS/BFS求解(JAVA &…

树--树的基本性质(JAVA)

前几篇文章介绍了图的搜索算法,最短路径算法,接下来介绍树: 树和图 树实际上就是不含回路的无向连通图 虽然树不连通,没有回路了,但是这也使得树这种数据结构有了更多的特性: 1.一棵树中的任意两个结点…

P1272 重建道路

一开始状态定义错了……所以没有对qwq,以及有几个坑qwq…… 首先 f [ i ] [ j ] 表示以 i 为根的子树,切除 j 个节点所需要切除的最小边数,而我一开始定义的是表示以 i 为根的子树,切除后生成一颗有 j 个节点的子树,所…

排序算法(二)--堆排序(JAVA)

堆的一个很重要的应用就是堆排序,和快速排序一样,堆排序的时间复杂度也是O(NlgN) 堆排序的实现思路一: 1.创建小根堆 2.每次删除顶部元素并将顶部元素输出(删除的函数中有调整的过程,每次调整) 时间复杂…

看后端程序员调试CORS的姿势

# 目录 为什么有同源策略? 需要解决的问题CORS跨域请求方案 preflightwithCredentials附:高效、优雅地调试CORS实现为什么有同源策略? 同源策略Same Origin Policy 是一种约定,是浏览器最核心的安全功能:该策略允许在…

堆的应用--并查集解决“擒贼先擒王”问题(JAVA)

现在有10个强盗。 1号强盗与2号强盗是同伙。 3号强盗与4号强盗是同伙。 5号强盗与2号强盗是同伙。 4号强盗与6号强盗是同伙。 2号强盗与6号强盗是同伙。 8号强盗与7号强盗是同伙。 9号强盗与7号强盗是同伙。 1号强盗与6号强盗是同伙。 2号强盗与4号强盗是同伙。 另外…

UVa 201 Square

这道题&#xff0c;没什么&#xff0c;就查找正方形&#xff0c; 特别注意一下 \n 的使用。 //UVa 201 //Square //#define LOCAL #include <stdio.h> #include <string.h> //use memset int dot[11][11][11][11], N;int getS(int size) {int cnt 0, flag;for(…

图论算法(四)--最小生成树的Kruskal [ 加边 ] 、Prim [ 加点 ] 的解法(JAVA)

之前我们介绍了求最短路径算法&#xff0c;现在又讲最小生成树算法&#xff0c;这两个算法有什么区别呢&#xff1f; 首先要明确&#xff0c;最短路径和最小生成树是两个不同的概念。 最短路径是对于一个图的两个结点而言的。在一个图中&#xff0c;结点A通过某些结点和边可以…

图论算法(五)--求解割点、割边(JAVA)

割点&#xff1a;对于一个连通图来说&#xff0c;如果删除某个点之后图不再连通&#xff0c;这个点就称为割点 割点算法 时间复杂度&#xff1a;O(NM) 但是下面给出的算法时间复杂度为O(N^2)&#xff0c;这是因为下面的存储结构都是邻接矩阵&#xff0c;这样的话用该算法就完…

express+handlebars 快速搭建网站前后台

最近在重构公司网站&#xff0c;原来网站使用PHP&#xff0c;前后端不分离&#xff0c;添加与更新网站内容仍使用原始方法&#xff0c;先出布局再把调好的布局给PHP后端开发&#xff0c;花时间长&#xff0c;维护不易。因此决定将网站前后端分离&#xff0c;核心功能含网站下单…

图论算法(六)-- 二分图的最大分配问题(JAVA)

二分图&#xff1a;又称二部图&#xff0c;如果一个图的所有顶点可以被分为X和Y两个集合&#xff0c;并且所有边的两个顶点恰好一个属于一个集合X&#xff0c;另一个属于集合Y&#xff0c;即每个集合内的顶点没有边相连&#xff0c;那么这个图就是二分图。 二分图的最大分配问…

定义一个二维数组并输入数据,将二维数组元素的值按升序排列,并输出排序后的二维数组。

目录 问题&#xff1a; 回顾&#xff1a; 给出两种做法&#xff1a; 解法一&#xff1a;调用qsort 函数进行排序 代码&#xff1a; 运行结果&#xff1a; 解法二&#xff1a;冒泡排序 代码&#xff1a; 运行结果: 回顾里的4种方法的模板参考&#xff1a; 1.冒泡排序…

.net core中使用GB2312编码

引用 System.Text.Encoding.CodePages 注册 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);转载于:https://www.cnblogs.com/liushunli/p/10342521.html

实验吧-密码学-杯酒人生(特殊凯撒--维吉尼亚密码)(凯撒加解密脚本、维吉尼亚密码加解密脚本)...

题目&#xff1a; 使用古典密码 一喵星人要想喵星发送一段不知道干什么用的密码“BLOCKCIPHERDESIGNPRINCIPLE”&#xff0c; 但是它忘记了密钥是什么&#xff0c; 手头&#xff08;爪头&#xff09;只有它自己加密过的密钥“HTRUZYJW”&#xff0c; 而且它 还知道原密钥是一个…

第五届省赛(软件类)真题----Java大学C组答案及解析

第五届省赛&#xff08;软件类&#xff09;真题—-Java大学C组答案及解析 杨辉三角调和级数回文素数过大年位平方和单位分数n级台阶 一、杨辉三角 二项式的系数规律&#xff0c;我国数学家很早就发现了。 如【图1.png】&#xff0c;我国南宋数学家杨辉1261年所著的《详解九…

Angular4.x 安装|创建项目|目录结构|创建组件

Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网&#xff1a;https://nodejs.org/zh-cn/ 去官网下载 node.js&#xff0c;下一步下一步就可以了。只要 node.js 安装成功&#xff0c;那么 npm 也会帮你安装完成&#xff01; 注意&#xff1a;请…

第五届省赛(软件类)真题----Java大学B组答案及解析

第五届省赛&#xff08;软件类&#xff09;真题—-Java大学B组答案及解析 正则切分调和级数n的n次幂七对数字勾股定理九阶数独G将军 一、正则切分 java中提供了对正则表达式的支持。 有的时候&#xff0c;恰当地使用正则&#xff0c;可以让我们的工作事半功倍&#xff01; …