mysql日志详细解析.docx
《mysql日志详细解析.docx》由会员分享,可在线阅读,更多相关《mysql日志详细解析.docx(31页珍藏版)》请在冰豆网上搜索。
![mysql日志详细解析.docx](https://file1.bdocx.com/fileroot1/2023-4/21/c38f49f7-2f48-43c9-9168-feb65ec79e28/c38f49f7-2f48-43c9-9168-feb65ec79e281.gif)
mysql日志详细解析
mysql日志详细解析
MySQL日志:
主要包含:
错误日志、查询日志、慢查询日志、事务日志、二进制日志;
日志是mysql数据库的重要组成部分。
日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。
当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。
错误日志
在mysql数据库中,错误日志功能是默认开启的。
并且,错误日志无法被禁止。
默认情况下,错误日志存储在mysql数据库的数据文件中。
错误日志文件通常的名称为hostname.err。
其中,hostname表示服务器主机名。
错误日志信息可以自己进行配置的,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-err是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。
默认情况下错误日志大概记录以下几个方面的信息:
服务器启动和关闭过程中的信息(未必是错误信息,如mysql如何启动InnoDB的表空间文件的、如何初始化自己的存储引擎的等等)、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息、在从服务器上启动服务器进程时产生的信息。
下面我们来定义mysql错误日志的功能:
一般而言,日志级别的定义没有回话变量都只是在全局级别下进行定义。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
mysql>SHOW GLOBALVARIABLESLIKE '%log%';
+-----------------------------------------+-----------------------------------+
| Variable_name |Value |
+-----------------------------------------+-----------------------------------+
|back_log |50 |
| binlog_cache_size |32768 |
| binlog_direct_non_transactional_updates|OFF |
| binlog_format |MIXED |
| binlog_stmt_cache_size |32768 |
| expire_logs_days |0 |
|general_log |OFF |
| general_log_file | /mydata/data/stu18.log |
| innodb_flush_log_at_trx_commit |1 |
| innodb_locks_unsafe_for_binlog |OFF |
| innodb_log_buffer_size |8388608 |
| innodb_log_file_size |5242880 |
| innodb_log_files_in_group |2 |
| innodb_log_group_home_dir |./ |
| innodb_mirrored_log_groups |1 |
|log | OFF |
|log_bin |ON |
| log_bin_trust_function_creators |OFF |
|log_error | /mydata/data/.err|定义错误日志
|log_output |FILE |
| log_queries_not_using_indexes |OFF |
| log_slave_updates |OFF |
| log_slow_queries |OFF |
| log_warnings |1 是否把警告信息写入错误日志中
| max_binlog_cache_size |18446744073709547520 |
| max_binlog_size |1073741824 |
| max_binlog_stmt_cache_size |18446744073709547520 |
| max_relay_log_size |0 |
|relay_log | |
| relay_log_index | |
| relay_log_info_file |relay-log.info |
| relay_log_purge |ON |
| relay_log_recovery |OFF |
| relay_log_space_limit |0 |
| slow_query_log |OFF |
|slow_query_log_file | /mydata/data/stu18-slow.log |
|sql_log_bin |ON |
|sql_log_off |OFF |
|sync_binlog |0 |
| sync_relay_log |0 |
| sync_relay_log_info |0 |
+-----------------------------------------+-----------------------------------+
其中,log_error可以直接定义为文件路径,也可以为ON|OFF;log_warings只能使用1|0来定义开关启动。
更改错误日志位置可以使用log_error来设置形式如下:
1
2
3
[root@stu18data]# vim/etc/f
[mysqld]
Log_error=DIR/[filename]
解析:
其中,DIR参数指定错误日志的路径filename参数是错误日志的名称,没有指定该参数时默认为主机名。
重启mysql服务器即可生效。
查看mysql错误日志:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@stu18data]# tail-20.err
130813 15:
30:
50 InnoDB:
Starting shutdown...
130813 15:
30:
51 InnoDB:
Shutdowncompleted; logsequencenumber1630920
13081315:
30:
51 [Note] /usr/local/mysql/bin/mysqld:
Shutdowncomplete
13081315:
30:
52 mysqld_safemysqldfrompid file /mydata/data/.pidended
13081315:
30:
53 mysqld_safeStartingmysqlddaemonwithdatabasesfrom /mydata/data
13081315:
30:
54 InnoDB:
TheInnoDBmemoryheapisdisabled #禁用了InnoDBmemory的堆功能。
13081315:
30:
54 InnoDB:
Mutexesandrw_locksuseGCCatomicbuiltins #Mutexes(互斥量)和rw_locks(行级锁)是GCC编译的是InnoDB内置的。
13081315:
30:
54 InnoDB:
Compressedtablesusezlib1.2.3 #默认压缩工具是zlib
13081315:
30:
55 InnoDB:
Initializingbufferpool,size=128.0M #InnoDB引擎的缓冲池(bufferpool)的值大小
13081315:
30:
55 InnoDB:
Completedinitializationofbufferpool
13081315:
30:
55 InnoDB:
highestsupported file format isBarracuda.
130813 15:
30:
57 InnoDB:
Waiting for the backgroundthreadstostart
13081315:
30:
58 InnoDB:
5.5.33started;logsequencenumber1630920
13081315:
30:
58 [Note]Server hostname (bind-address):
'0.0.0.0';port:
3306
13081315:
30:
58 [Note] - '0.0.0.0' resolvesto '0.0.0.0'; #0.0.0.0会反解主机名,这里反解失败
13081315:
30:
58 [Note]ServersocketcreatedonIP:
'0.0.0.0'.
13081315:
30:
58 [Note]EventScheduler:
Loaded0events #事件调度器没有任何事件,因为没有装载。
13081315:
30:
58 [Note] /usr/local/mysql/bin/mysqld:
ready for connections. #mysql启动完成等待客户端的请求。
Version:
'5.5.33-log' socket:
'/tmp/mysql.sock' port:
3306 Sourcedistribution #创建一个本地sock用于本地连接。
删除错误日志:
在mysql5.5.7之前:
数据库管理员可以删除很长时间之前的错误日志,以保证mysql服务器上的硬盘空间。
mysql数据库中,可以使用mysqladmin命令开启新的错误日志。
mysqladmin命令的语法如下:
mysqladmin–uroot–pflush-logs也可以使用登录mysql数据库中使用FLUSHLOGS语句来开启新的错误日志。
在mysql5.5.7之后:
服务器将关闭此项功能。
只能使用重命名原来的错误日志文件,手动冲洗日志创建一个新的:
方式如下:
1
2
3
4
[root@stu18data]#mv.err .err.old
[root@stu18data]# mysqladminflush-logs
[root@stu18data]#ls
hellodb myclass mysql-bin.000003 mysql-bin.index .pid ibdata1 mysql mysql-bin.000004 performance_schema ib_logfile0 mysql-bin.000001 .err test ib_logfile1 mysql-bin.000002 .err.old
更多信息请查阅官方文档:
查询日志:
默认情况下查询日志是关闭的。
由于查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。
如若不是为了调试数据库的目的建议不要开启查询日志。
查看查询日志是否开启:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
mysql>SHOW GLOBALVARIABLESLIKE '%log%';
+-----------------------------------------+-----------------------------------+
| Variable_name |Value |
+-----------------------------------------+-----------------------------------+
|back_log |50 |
| binlog_cache_size |32768 |
| binlog_direct_non_transactional_updates|OFF |
| binlog_format |MIXED |
| binlog_stmt_cache_size |32768 |
| expire_logs_days |0 |
|general_log |OFF #定义查询日志是否开启 |
| general_log_file | /mydata/data/stu18.log #定义查询日志的文件地址名称 |
| innodb_flush_log_at_trx_commit |1 |
| innodb_locks_unsafe_for_binlog |OFF |
| innodb_log_buffer_size |8388608 |
| innodb_log_file_size |5242880 |
| innodb_log_files_in_group |2 |
| innodb_log_group_home_dir |./ |
| innodb_mirrored_log_groups |1 |
|log | OFF #是否开启日志 (若开启则表示开启所有的日志功能) |
|log_bin |ON |
| log_bin_trust_function_creators |OFF |
|log_error | /mydata/data/.err |
|log_output |FILE #日志的输出的位置 |
| log_queries_not_using_indexes |OFF |
| log_slave_updates |OFF |
| log_slow_queries |OFF |
| log_warnings |1 |
| max_binlog_cache_size