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,一经查实,立即删除!

相关文章

图论算法(三)--最短路径 的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.一棵树中的任意两个结点…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第五届省赛(软件类)真题—-Java大学A组答案及解析 子序列最大长度莱布尼茨公式n的n次幂七对数字勾股定理九阶数独矩阵射线 一、子序列最大长度 一个串的子串是指该串的一个连续的局部。如果不要求连续,则可称为它的子序列。 比如对串&…

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

第六届省赛(软件类)真题----Java大学C组答案及解析隔行变色立方尾无穷分数循环节长度格子中输出奇妙的数字加法变乘法移动距离打印大X垒骰子 一、隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的…

spring_01概念及案例

1.什么是IOC?   IOC概念:inverse of Controll,控制反转,所谓控制反转,就是把创建对象和维护对象关系的权利从程序中转移到spring的容器中(applicationContext.xml),而程序本身不再维护 2.什么是di? dependency injection,依赖注入,di和IOC是一个概念,spring的设计者认为di等…

斐波那契数列(二)--矩阵优化算法

之前写了一篇从斐波那契数列分析递归与动态规划(JAVA)来优化斐波那契数列,这样可以使算法的时间复杂度从O(n^2)变到O(n),这是使用递归公式f(n)f(n-1)f(n-2)求斐波那契数列的最优算法,但是这只是一维世界下的极限。下面我们将其从一…

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

第六届省赛(软件类)真题----Java大学B组答案及解析三角形面积立方变自身三羊献瑞循环节长度九数组分数加法变乘法牌型种数饮料换购垒骰子生命之树 一、三角形面积如【图1】所示。图中的所有小方格面积都是1。那么,图中的三角形面积应该是多少…

【学习总结】GirlsInAI ML-diary day-11-while循环

【学习总结】GirlsInAI ML-diary 总 原博github链接-day11 认识while循环执行 对于while/break/continue的认识 新值替换变量 一般while语句 无限循环 & break continue 作业 1-更新变量 这一条没什么新的东西,别的语言也一样:python在赋值时&#x…

@PathVariable、@RequestParam、@RequestBody注解

讲解更加详细的参考资料 https://blog.csdn.net/u011410529/article/details/66974974 https://www.cnblogs.com/soul-wonder/p/8920553.html PathVariable注解的作用,获取请求地址中传递的参数,即:从URL模版中取值。 RequestParam 是从reque…

深入浅出讲算法思想--蛮力法思想分析及应用

蛮力法(brute force method,也称为穷举法或枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法。虽然,用蛮力法设计的算法时间特性往往也是最低的…

光耦在短距离通信中的应用

在高低压隔离系统设计中,难免会使用光耦来通信。在选择光耦器件时,需要考虑光耦允许的最大通信速率,否则在高速通信时会失败. 对于高速的光耦应用时,需要注意电流传输比率和开关速度。 参考文档《Basic Characteristics and Appli…