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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐