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


Posted in MySQL onNovember 27, 2021

简介

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

日志分类

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

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

参数文件

参数文件就是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线程去读取中继日志文件内容并写入到自身数据中。

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

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日志文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL分库分表与分区的入门指南
Apr 22 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
Mysql数据库命令大全
May 26 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL多表查询机制
Mar 17 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 #MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Linux7.6二进制安装Mysql8.0.27详细操作步骤
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 #MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 #MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 #MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 #MySQL
You might like
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python中matplotlib中文乱码解决办法
2017/05/12 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
小学家长会邀请函
2014/01/23 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
活着观后感
2015/06/03 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫