MySQL的日志文件

本文将重点介绍MySQL的日志文件类型,并讲解其作用 , 并结合一定实操演示 , 相信跟着做下来你会对MySQL有更深的理解 。
文件的概念【MySQL的日志文件】在开始讲MySQL日志文件之前,首先我们要明确一下文件的概念 。MySQL数据库是存放在硬盘上的,用户进程通过和一个运行的MySQL实例进程通信(也就是需要一个运行的MySQL服务),通过这个服务去操作磁盘上的MySQL数据库文件,实现数据存取修改的目的,因此,我们先来看看都有哪些文件 。
# 在MySQL登录状态下,执行这个命令可以查看我们数据库主要数据文件的位置mysql> show variables like 'datadir';+---------------+------------------------+| Variable_name | Value|+---------------+------------------------+| datadir| /usr/local/mysql/data/ |+---------------+------------------------+# 得知路径之后在Linux终端进行查看sudo ls -lh /usr/local/mysql/data/# 下面是执行了命令之后的部分展示(这里列出了MySQL的各种日志文件、索引相关的文件、你建立的数据库的文件等,先有个概念 , 等阅读下面讲到的各种文件时可以回上来看一看)-rw-r-----1 _mysql_mysql6.7K1 19 10:51 binlog.000006-rw-r-----1 _mysql_mysql179B1 24 15:04 binlog.000007-rw-r-----1 _mysql_mysql48B1 24 15:05 binlog.index-rw-r-----1 _mysql_mysql4.1K1 24 15:04 ib_buffer_pool-rw-r-----1 _mysql_mysql48M2 26 14:06 ib_logfile0-rw-r-----1 _mysql_mysql48M 10 11 11:37 ib_logfile1drwxr-x---5 _mysql_mysql160B 10 13 15:01 blog-rw-r-----1 _mysql_mysql12M2 26 14:04 ibdata1-rw-r-----1 _mysql_mysql12M1 24 15:05 ibtmp1-rw-r-----1 _mysql_mysql180B32 17:28 lilithgamesdeMacBook-Pro-42-slow.log-rw-r-----1 _mysql_mysql249B32 17:55 lilithgamesdeMacBook-Pro-42.log-rw-r-----1 _mysql_mysql24M2 26 14:04 mysql.ibd-rw-r-----1 _mysql_mysql11K1 24 15:05 mysqld.local.err-rw-r-----1 _mysql_mysql4B1 24 15:05 mysqld.local.pid-rw-r-----1 _mysql_mysql16M2 26 14:06 undo_001-rw-r-----1 _mysql_mysql16M2 26 14:06 undo_002参数文件MySQL登录状态下使用show variables命令查看所有参数(key-value形式),这些参数控制着MySQL的各种状态属性 。这个命令在我们需要获取MySQL的各种状态时会被高频使用到 。
# 查询所有参数mysql> show variables;# 也可以使用like参数指定需要查询的参数mysql> show variables like 'warning_count';# 设置全局参数值,键值对的形式mysql> set global 参数名=参数值日志文件错误日志(error log)错误日志记录了MySQL的启动、运行、关闭的过程 。遇到例如MySQL无法正常启动 , 可以查看错误日志文件 。而且错误日志会记录MySQL运行过程中的警告(warning),通过查看这些警告?可以针对出现警告的原因进行优化,从而达到优化数据库的目的 。
# 在MySQL登录状态下 , 使用下面命令可以查看error log在服务器上的位置mysql> show variables like 'log_error';+---------------+----------------------------------------+| Variable_name | Value|+---------------+----------------------------------------+| log_error| /usr/local/mysql/data/mysqld.local.err |+---------------+----------------------------------------+# 然后通过tail -n 50 查看倒数50行的错误日志内容去定位错误(不是在MySQL登录状态下,而是在Linux用户态下,sudo获取访问权限)sudo tail -n 50 /usr/local/mysql/data/mysqld.local.err# 具体日志内容不作展示慢查询日志(slow query log)慢查询日志的作用是将运行时间超过设定值的所有SQL语句都记录到慢查询日志中 , 通过定期检查慢查询日志,通过定位到慢SQL语句之后,对其进行分析,是否是因为索引未生效的等原因导致查询过慢,可以对查询过慢的SQL语句进行优化 。
# 在MySQL登录状态下查看慢查询日志阈值 , 执行时间超过这个值的SQL会被记录下来mysql> show variables like 'long_query_time';+-----------------+-----------+| Variable_name| Value|+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+# 查询是否开启慢查询日志(默认关闭)mysql> show variables like 'slow_query_log';+----------------+-------+| Variable_name| Value |+----------------+-------+| slow_query_log | OFF|+----------------+-------+# 开启慢查询日志mysql> set global slow_query_log=on;一个和慢查询日志有关的参数是log_queries_not_using_indexes,开启之后 。如果运行的SQL没有使用索引,则MySQL数据库同样会将这条SQL语句记录到慢查询日志文件中 。
# 查询是否将未执行索引的SQL加入到慢查询日志当中(默认关闭)mysql> show variables like 'log_queries_not_using_indexes';+-------------------------------+-------+| Variable_name| Value |+-------------------------------+-------+| log_queries_not_using_indexes | OFF|+-------------------------------+-------+# 开启参数mysql> set global log_queries_not_using_indexes=on;

推荐阅读