mysql日志的存放形式_mysql日志详细解析

mysql⽇志的存放形式_mysql⽇志详细解析
MySQL⽇志:
主要包含:错误⽇志、查询⽇志、慢查询⽇志、事务⽇志、⼆进制⽇志;
⽇志是mysql数据库的重要组成部分。⽇志⽂件中记录着mysql数据库运⾏期间发⽣的变化;也就是说⽤来记录mysql数据库的客户端连接状况、SQL语句的执⾏情况和错误信息等。当数据库遭到意外的损坏时,可以通过⽇志查看⽂件出错的原因,并且可以通过⽇志⽂件进⾏数据恢复。
错误⽇志
在mysql数据库中,错误⽇志功能是默认开启的。并且,错误⽇志⽆法被禁⽌。默认情况下,错误⽇志存储在mysql数据库的数据⽂件中。错误⽇志⽂件通常的名称为。其中,hostname表⽰服务器主机名。
错误⽇志信息可以⾃⼰进⾏配置的,错误⽇志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-err是定义是否启⽤错误⽇志的功能和错误⽇志的存储位置,log-warnings是定义是否将警告信息也定义⾄错误⽇志中。默认情况下错误⽇志⼤概记录以下⼏个⽅⾯的信息:服务器启动和关闭过程中的信息(未必是错误信息,如mysql如何启动InnoDB的表空间⽂件的、如何初始化⾃⼰的存储引擎的等
等)、服务器运⾏过程中的错误信息、事件调度器运⾏⼀个事件时产⽣的信息、在从服务器上启动服务器进程时产⽣的信息。
下⾯我们来定义mysql错误⽇志的功能:
⼀般⽽⾔,⽇志级别的定义没有回话变量都只是在全局级别下进⾏定义。
mysql> SHOW GLOBAL VARIABLES LIKE '%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/ |定义错误⽇志| 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来设置形式如下:
[root@stu18 data]# vim /etc/myf[mysqld]Log_error=DIR/[filename]
解析:其中,DIR参数指定错误⽇志的路径filename参数是错误⽇志的名称,没有指定该参数时默认为主机名。重启mysql服务器即可⽣效。
查看mysql错误⽇志:
[root@stu18 data]# tail -130813 15:30:50 InnoDB: 130813 15:30:51 InnoDB: Shutdown completed; log sequence number 1630920
130813 15:30:51 [Note] /usr/local/mysql/bin/mysqld: Shutdowncomplete130813 15:30:52 mysqld_safe mysqld from pid file /mydata/data/stu18.magedu.pid ended130813 15:30:53 mysqld_safe Starting mysqld daemon with databases from /mydata/data130813 15:30:54 InnoDB: The InnoDB memory heap isdisabled #禁⽤了InnoDB memory的堆功能。130813 15:30:54 InnoDB: Mutexes and rw_locks useGCC atomic builtins #Mutexes(互斥量)和rw_locks(⾏级锁)是GCC编译的是InnoDB内置的。130813 15:30:54 InnoDB: Compressed tables use zlib 1.2.3#默认压缩⼯具是zlib130813 15:30:55 InnoDB: Initializing buffer pool, size = 128.0M #InnoDB引擎的缓冲池(buffer pool)的值⼤⼩130813 15:30:55 InnoDB: Completed initialization ofbuffer pool130813 15:30:55 InnoDB: highest supported file format isBarracuda.130813 15:30:57 InnoDB: Waiting for the background threads tostart130813 15:30:58 InnoDB: 5.5.33 started; log sequence number 1630920
130813 15:30:58 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130813 15:30:58 [Note] - '0.0.0.0' resolves to '0.0.0.0'; #0.0.0.0会反解主机名,这⾥反解失败130813 15:30:58 [Note] Server socket created on IP: '0.0.0.0'.130813 15:30:58 [Note] Event Scheduler: Loaded 0events #事件调度器没有任何事件,因为没有装载。130813 15:30:58 [Note] /usr/local/mysql/bin/mysqld: ready forconnections. #mysql启动完成等待客户端的请求。
Version:'5.5.33-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution #创建⼀个本地sock⽤于本地连接。
删除错误⽇志:
在mysql5.5.7之前:数据库管理员可以删除很长时间之前的错误⽇志,以保证mysql服务器上的硬盘空间。mysql数据库中,可以使⽤mysqladmin命令开启新的错误⽇志。mysqladmin命令的语法如下:mysqladmin –u root –pflush-logs也可以使⽤登录mysql数据库中使⽤FLUSHLOGS语句来开启新的错误⽇志。
在mysql5.5.7之后:服务器将关闭此项功能。只能使⽤重命名原来的错误⽇志⽂件,⼿动冲洗⽇志创建⼀个新的:⽅式如下:
[root@stu18 data]# mv ld[root@stu18 data]# mysqladmin flush-
logs[root@stu18 data]# ls
hellodb myclass mysql-bin.000003 mysql-bin.index stu18.magedu.pid ibdata1 mysql mysql-bin.000004
performance_schema ib_logfile0 mysql-bin.000001 test ib_logfile1 mysql-bin.000002
ld
查询⽇志:
默认情况下查询⽇志是关闭的。由于查询⽇志会记录⽤户的所有操作,其中还包含增删查改等信息,在并发操作⼤的环境下会产⽣⼤量的信息从⽽导致不必要的磁盘IO,会影响mysql的性能的。如若不是为了调试数据库的⽬的建议不要开启查询⽇志。
查看查询⽇志是否开启:
mysql> SHOW GLOBAL VARIABLES LIKE '%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/ |
| 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 |
+-----------------------------------------+-----------------------------------+ 41 rows in set (0.00 sec)
拓展解析:⽇志的输出位置⼀般有三种⽅式:file(⽂件),table(表),none(不保存);其中前两个输出位置可以同时定义,none表⽰是开启⽇志功能但是记录⽇志信息。file就是通过general_log_file |/mydata/data/stu18.log 等⽅式定义的,⽽输出位置定义为表时查看⽇志的内容⽅式为:
mysql> usemysql; #在此数据库中Databasechanged
mysql>show tables;+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |#这个就是查询⽇志的表输出位置| help_category |
| help_keyword |
| help_relation |
|help_topic
………………|
+---------------------------+
慢查询⽇志:
慢查询⽇志是⽤来记录执⾏时间超过指定时间的查询语句。通过慢查询⽇志,可以查出哪些查询语句的执⾏效率很低,以便进⾏优化。⼀般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执⾏了很长时间的查询语句。可以帮助我们定位性能问题的。
查看慢查询⽇志的定义:
mysql> SHOW GLOBAL VARIABLES LIKE '%log%';| slow_query_log | OFF#定义慢查询⽇志的| slow_query_log_file6aaaa
|/mydata/data/stu18-slow.log #输出⽅式为file(⽂件)时定义慢查询⽇志的位置
启动和设置慢查询⽇志:
1、通过配置⽂件myf中的log-slow-queries选项可以开启慢查询⽇志;形式如下:
直线度测量[root@stu18 data]# vim /etc/myf[mysqld]slow_query_log=1
log-slow-queries [= DIR/[filename] ]
其中,DIR参数指定慢查询⽇志的存储路径;filename参数指定⽇志的⽂件名,⽣成⽇志⽂件的完成名称为filename-slow.log。如果不指定存储路径,慢查询⽇志默认存储到mysql数据库的数据⽂件下,如果不指定⽂件名,默认⽂件名为hostname-slow.log。
2、通过登录mysql服务器直接定义,⽅式如下:
电缆转接箱⾸先要有全局权限;然后执⾏mysql>set global slow_query_log=1;
时间默认超过多少的称为慢查询⽇志?
⼀般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询⽇志中。查看服务器默认时间值⽅式如下:
mysql> SHOW GLOBAL VARIABLES LIKE 'long%';+-----------------+-----------+
| Variable_name | Value |

本文发布于:2024-09-21 22:36:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/142855.html

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

标签:查询   错误   定义   服务器   信息   默认   时间   数据库
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议