全⾯盘点MySQL中的那些重要⽇志⽂件
⽬录
简介
⽇志分类
参数⽂件
错误⽇志⽂件
全量⽇志⽂件
慢查询⽇志
⼆进制⽇志⽂件
审计⽇志
中继⽇志
PID⽂件
Socket⽂件
数据库与表
存储引擎⽂件
简介
该篇⽂章对MySQL中的⽇志进⾏总结与简单介绍,不会涉及的太深。主要的⽬的是为了对MySQL中的⽇志⽂件有⼀个体系化的了解。
⽇志分类
MySQL中的⽇志⽂件,配置⽂件、错误⽇志⽂件、⼆进制⽂件(binary log)、慢查询⽇志(slow-query-log)、全量⽇志(genera log)、审计⽇志(audit log)、数据库⽂件&数据表⽂件、存储引擎⽂件、中继⽇志(relay log)、进程⽂件(PID)和Socket⽂件。
参数⽂件
参数⽂件就是MySQL中的配置⽂件,在Linux下的myf⽂件、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
mysql下载哪个盘
log-error              = /var/lib/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即可。
***************.0.1:(none)>showvariableslike'%log_error%';
+---------------------+--------------------------------+
| Variable_name      | Value                          |
+---------------------+--------------------------------+
| binlog_error_action | ABORT_SERVER                  |
| log_error          | /var/lib/log |
| log_error_verbosity | 3                              |
+---------------------+--------------------------------+
3 rows in set
Time: 0.010s
全量⽇志⽂件
全量⽇志⽂件记录的是MySQL所有的SQL操作⽇志记录。例如增删改查等操作都会被记录下来。
****************.0.1:(none)>showvariableslike'%general%';
<
+------------------+---------------------------------+
| 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:******************************.0.1onusingTCP/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:******************************.0.1onusingTCP/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:******************************.0.1onusingTCP/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 lumns
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语句,被记录在慢查询⽇志⽂件中。慢查询的配置主要有如下三个参数。
是否开启慢查询与慢查询⽇志⽂件。
***************.0.1:(none)>showvariableslike'%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
慢查询时间阈值。
***************.0.1:(none)>showvariableslike'%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等语句。⼆进制⽇志⽂件主要的作⽤如下:
⽤户主从复制,主服务器将⼆进制⽂件中的物理⽇志发送给从服务器,从服务器在将⽇志写⼊到⾃⾝。
⽤于数据恢复。根据物理⽇志,回数据丢失之前的操作⽇志。
可以通过如下⼏个参数进⾏配置:
***************.0.1:(none)>showvariableslike'%log_bin%';
<
+---------------------------------+--------------------------------+
| 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⽇志⽂件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。