全面盘点MySQL中的那些重要日志文件

目录
  • 简介
  • 日志分类
  • 参数文件
  • 错误日志文件
  • 全量日志文件
  • 慢查询日志
  • 二进制日志文件
  • 审计日志
  • 中继日志
  • PID文件
  • Socket文件
  • 数据库与表
  • 存储引擎文件

简介

该篇文章对MySQL中的日志进行总结与简单介绍,不会涉及的太深。主要的目的是为了对MySQL中的日志文件有一个体系化的了解。

日志分类

MySQL中的日志文件,配置文件、错误日志文件、二进制文件(binary log)、慢查询日志(slow-query-log)、全量日志(genera log)、审计日志(audit log)、数据库文件&数据表文件、存储引擎文件、中继日志(relay log)、进程文件(PID)和Socket文件。

参数文件

参数文件就是MySQL中的配置文件,在Linux下的my.cnf文件、Windows下的my.ini文件。文件内容主要分为server和client两个模块。server模块配置的是有关MySQL的服务信息,例如慢查询日志。client模块配置的是有关MySQL客户端连接信息,例如客户端连接的端口号。
文件格式大致如下:

[client]
port                    = 3306
default-character-set   = utf8mb4

[mysqld]
user                    = mysql
port                    = 3306
sql_mode                = ""
default-storage-engine  = InnoDB
default-authentication-plugin   = mysql_native_password
character-set-server    = utf8mb4
collation-server        = utf8mb4_unicode_ci
init_connect            = 'SET NAMES utf8mb4'
slow_query_log
long_query_time         = 3
slow-query-log-file     = /var/lib/mysql/mysql.slow.log
log-error               = /var/lib/mysql/mysql.error.log
default-time-zone       = '+8:00'

错误日志文件

错误日志文件记录了MySQL从启动、运行和关闭几个环节中的日志信息。例如连接MySQL连接失败、查询命令错误、SQL执行流程等等。对于定位MySQL错误有着很大的帮助。
文件大致内容如下:

Version: '5.7.28-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
2021-04-17T21:23:00.865868Z 3 [Note] Aborted connection 3 to db: 'exam_wechat' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
2021-04-17T21:23:00.865969Z 2 [Note] Aborted connection 2 to db: 'exam_wechat' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
2021-04-19T22:33:24.137143Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 18415ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
2021-04-20T07:03:21.765208Z 79 [Note] Access denied for user 'root'@'172.18.0.1' (using password: NO)
2021-04-20T07:03:23.825044Z 81 [Note] Aborted connection 81 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got an error reading communication packets)
2021-04-20T07:14:25.033983Z 82 [Note] Access denied for user 'root'@'172.18.0.1' (using password: NO)
2021-04-20T07:14:27.442608Z 84 [Note] Aborted connection 84 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got an error reading communication packets)
2021-04-20T07:27:13.971644Z 83 [Note] Aborted connection 83 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
2021-04-20T07:41:02.916249Z 85 [Note] Aborted connection 85 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)

如何开始错误日志。只要在MySQL中的配置文件中配置意向log_error即可。

mysql root@127.0.0.1:(none)> show variables like '%log_error%';
+---------------------+--------------------------------+
| Variable_name       | Value                          |
+---------------------+--------------------------------+
| binlog_error_action | ABORT_SERVER                   |
| log_error           | /var/lib/mysql/mysql.error.log |
| log_error_verbosity | 3                              |
+---------------------+--------------------------------+
3 rows in set
Time: 0.010s

全量日志文件

全量日志文件记录的是MySQL所有的SQL操作日志记录。例如增删改查等操作都会被记录下来。

mmysql root@127.0.0.1:(none)> show variables like '%general%';
Reconnecting...
+------------------+---------------------------------+
| Variable_name    | Value                           |
+------------------+---------------------------------+
| general_log      | OFF                             |
| general_log_file | /var/lib/mysql/7fdc5f723ff9.log |
+------------------+---------------------------------+

配置项有三种值,table,none和file。配置file则会记录在日志文件中,配置none则不会记录,配置table则会在MySQL默认的MySQL数据中创建一张表(表名叫做general-log)来记录日志。

不推荐开启,记录的日志文件太多,不仅仅有性能消耗同时也占用太多无效空间。

# 日志记录文件格式
mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
2021-04-20T09:16:48.572888Z	   88 Connect	root@172.18.0.1 on  using TCP/IP
2021-04-20T09:16:48.574591Z	   88 Connect	Access denied for user 'root'@'172.18.0.1' (using password: NO)
2021-04-20T09:16:50.325379Z	   89 Connect	root@172.18.0.1 on  using TCP/IP
2021-04-20T09:16:50.329894Z	   89 Query	select connection_id()
2021-04-20T09:16:50.335222Z	   89 Query	SELECT @@VERSION
2021-04-20T09:16:50.339432Z	   90 Connect	root@172.18.0.1 on  using TCP/IP
2021-04-20T09:16:50.339621Z	   89 Query	SELECT @@VERSION_COMMENT
2021-04-20T09:16:50.343525Z	   90 Query	select connection_id()
2021-04-20T09:16:50.347115Z	   90 Query	SHOW DATABASES
2021-04-20T09:16:50.380236Z	   90 Query	select TABLE_NAME, COLUMN_NAME from information_schema.columns
                                    where table_schema = 'None'
                                    order by table_name,ordinal_position
2021-04-20T09:16:50.391019Z	   90 Query	SELECT CONCAT("'", user, "'@'",host,"'") FROM mysql.user
2021-04-20T09:16:50.415062Z	   90 Query	SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_TYPE="FUNCTION" AND ROUTINE_SCHEMA = "None"
2021-04-20T09:16:50.432015Z	   90 Query	SELECT name from mysql.help_topic WHERE name like "SHOW %"
2021-04-20T09:16:52.572608Z	   89 Query	show variables like '%general%'
2021-04-20T09:17:13.532046Z	   89 Query	show variables like '%general%'

慢查询日志

慢查询日志是定位SQL语句查询快与慢而记录的一种日志文件。当某一条SQL语句查询时间超过一个固定的阈值,这条SQL语句将被定义为慢查询的SQL语句,被记录在慢查询日志文件中。

慢查询的配置主要有如下三个参数。

是否开启慢查询与慢查询日志文件。

mysql root@127.0.0.1:(none)> show variables like '%slow%';
+---------------------------+-------------------------------+
| Variable_name             | Value                         |
+---------------------------+-------------------------------+
| slow_query_log            | ON                            |
| slow_query_log_file       | /var/lib/mysql/mysql.slow.log |
+---------------------------+-------------------------------+
5 rows in set
Time: 0.014s

慢查询时间阈值。

mysql root@127.0.0.1:(none)> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set
Time: 0.013

二进制日志文件

二进制日志(binary log)文件用于记录MySQL的DML语句,记录了操作之后的物理日志内容,不会记录MySQL中的select、show等语句。二进制日志文件主要的作用如下:

用户主从复制,主服务器将二进制文件中的物理日志发送给从服务器,从服务器在将日志写入到自身。

用于数据恢复。根据物理日志,找回数据丢失之前的操作日志。

可以通过如下几个参数进行配置:

mysql root@127.0.0.1:(none)> show variables like '%log_bin%';
Reconnecting...
+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/lib/mysql/mysql-bin       |
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |
+---------------------------------+--------------------------------+
6 rows in set
Time: 0.015s

log_bin是否开启二进制日志文件,log_bin_basename存储的目录以及日志文件前缀,log_bin_index存储日志文件索引(日志文件名称)。如果日志文件没有指定文件名称,则默认使用本机名称。

日志文件列表。

-rw-r-----   1 mysql root       154 Apr 12 09:31 mysql-bin.000041
-rw-r-----   1 mysql root       154 Apr 12 19:45 mysql-bin.000042
-rw-r-----   1 mysql root   1459325 Apr 17 20:26 mysql-bin.000043
-rw-r-----   1 mysql mysql    24576 Apr 17 22:18 mysql-bin.000044
# cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
./mysql-bin.000006

审计日志

审计日志用来记录MySQL的网络活动,对MySQL的操作记录做统计、分析与报告等。属于对MySQL安全监控记录类的日志文件。

MySQL自身不包含该功能的,并且该功能在MySQL官网也是收费的。这里也不做具体的演示。

中继日志

中继日志是MySQL主从复制,在从服务器上的一个重要角色。当主服务器将二进制文件发送给从服务器时,从服务器不会立马执行,而是放在一个指定的一类日志文件中,从服务器在开启一个SQL线程去读取中继日志文件内容并写入到自身数据中。

PID文件

PID是一个MySQL实例的进程文件号。MySQL属于单进程服务,在启动一个MySQL实例,就会创建一个PID文件。

Socket文件

Socket也是MySQL通信的一种方式。MySQL通信有两种方式,TCP和Socket方式。TCP是走网络通信,可以将服务部署到任意可以访问的服务器上。Socket是走的文件通信方式,必须在同一台服务器上。

# TCP模式
mysql -hxxxx -pxxxx -uxxxx -Pxxx
mysql -uxxxx -pxxxx -s /path/socket

数据库与表

数据库与表值的就是MySQL中的表结构文件、数据文件和索引文件。
InnoDB存储引擎的数据表结构

-rw-r-----  1 mysql root   13650 Apr 13 09:46 wechat_user.frm
-rw-r-----  1 mysql mysql  98304 Apr 17 13:43 wechat_user.ibd

MyISAM存储引擎的数据表结构

-rw-r-----  1 mysql mysql      0 Apr 20 17:53 users.MYD
-rw-r-----  1 mysql mysql   1024 Apr 20 17:53 users.MYI
-rw-r-----  1 root  root    8586 Apr 20 17:53 users.frm

存储引擎文件

不同的存储引擎,实现起来也不同。InnoDB存储引擎分为redolog和undolog两种日志文件。

到此这篇关于全面盘点MySQL中的那些重要日志文件的文章就介绍到这了,更多相关mysql日志文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复. 二进制日志文件的弊端 二进制日志文件开启后,所有对数据库操作的记录均会被记录到此文件, 所以,当长时间开启之后,日志文件会变得很大,占用磁盘空间. 使用二进制日志文件恢复数据库 开启日志文件 mysql默认是不开启日志文件的功能的,

  • Mysql日志文件和日志类型介绍

    日志文件类型 MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件 记入文件中的信息类型 错误日志 记录启动.运行或停止mysqld时出现的问题. 查询日志 记录建立的客户端连接和执行的语句. 更新日志 记录更改数据的语句.不赞成使用该日志. 二进制日志 记录所有更改数据的语句.还用于复制. 慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询. 默认情况下,所有日志创建于mysqld数据目录中.通过刷新日志,你可以强制 mys

  • MySQL日志文件详解

    概述 日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述MySQL的各种日志文件. MySQL日志文件分类 1.错误日志(Error Log) 2.二进制日志(Binary Log & Binary Log Index) 3.通用查询日志(query log) 4.慢查询日志(slow que

  • mysql日志文件在哪 如何修改MySQL日志文件位置

    MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考. 今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了. 后来发现MySQL日志位是指定的: [root@localhost etc]# ps aux|grep mysqld root 11830 0.5 0.0 4524 1204 pts/0 S 03:03 0:00 /bin/sh /usr/bin/mys

  • 全面盘点MySQL中的那些重要日志文件

    目录 简介 日志分类 参数文件 错误日志文件 全量日志文件 慢查询日志 二进制日志文件 审计日志 中继日志 PID文件 Socket文件 数据库与表 存储引擎文件 简介 该篇文章对MySQL中的日志进行总结与简单介绍,不会涉及的太深.主要的目的是为了对MySQL中的日志文件有一个体系化的了解. 日志分类 MySQL中的日志文件,配置文件.错误日志文件.二进制文件(binary log).慢查询日志(slow-query-log).全量日志(genera log).审计日志(audit log).

  • MySQL中二进制与重做日志文件的基本概念学习教程

    二进制日志 二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用: 1.恢复(recovery)2.复制(replication) 二进制日志的启动:配置参数log-bin[=name],如果不指定name,则默认二进制日志文件名为主机名,后缀名为二级制日志的序列号,所在路径为数据库所在目录. 以index为后缀的文件为二进制日志的索引文件,用来存储过往生产的二进制日志. 和二进制日志相关的参数: max_binlog_size.binlog_cache_size.sync_bi

  • MySQL中Binary Log二进制日志文件的基本操作命令小结

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与master同步. 1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可 eg: [mysqld] ...... log_bin = mysq

  • mysql中的7种日志小结

    MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slow query log) 6:一般查询日志(general log) 7:中继日志(relay log) 其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义. 一.重做日志(redo log) 作用: 确保事务的持久性.re

  • SpringBoot中通过AOP整合日志文件的实现

    目录 1.导入相关的依赖 2.log4j2 日志文件 3.dao层的接口以及实现类 4.Service层业务实现类 5.Controller层接口控制类 6.编写业务类增强类,加入一个日志文件记录 7.运行测试,查看结果 1.导入相关的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter&

  • logback中显示mybatis查询日志文件并写入的方法示例

    目录 在logback中显示mybatis查询日志 一.配置文件 二.定制包的日志level 三.通过logback-spring.xml文件 将操作数据库sql记录到日志文件中 网上看了很多篇文章关于如何配置mybatis的logback日志的,复杂的简单的都有,但是有用的没几个,耽误了很多时间.通过对logback的学习,以下方式是一定可行的,希望可以为大家节省点时间.通常我们可以通过如下配置将操作数据库的sql语句打印到控制台上,但是如何将这些sql语句记录到日志文件中方便我们查询问题呢?

  • mysql中的general_log(查询日志)开启和关闭

    目录 general_log(查询日志)开启和关闭 一.查询日志开启 二.查询日志关闭 mysql查看触发器错误(开启general_log日志) general_log(查询日志)开启和关闭 一.查询日志开启 方法一: mysql>set global general_log_file='/tmp/general.lg';    #设置路径 mysql>set global general_log=on;    # 开启general log模式 mysql>set global ge

  • mysql中mysql-bin.000001是什么文件可以删除吗

    用ports安装了mysql以后,过一段时间发现/var空间不足了,查一下,会发现是mysql-bin.000001.mysql-bin.000002等文件占用了空间,那么这些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的. 这样做主要有以下两个目的: 1:数据恢复 如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题

  • MySQL中开启和使用通用查询日志的实例教程

    开启通用查询日志 因为为了性能考虑,一般通用查询日志general log不会开启.slow log可以定位一些有性能问题的sql,而general log会记录所有的SQL. mysql5.0版本,如果要开启slow log.general log,需要重启,从MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改. mysql>select versio

  • MySQL中常见的几种日志汇总

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日常学习及运维过程中也会和这些日志打交道.本节内容将带你了解 MySQL 数据库中几种常用日志的作用及管理方法. 1.错误日志(errorlog) 错误日志记录着 mysqld 启动和停止,以及服务器在运行过程中发生的错误及警告相关信息.当数据库意外宕机或发生其他错误时,我们应该去排查错误日志. lo

随机推荐