12.Mysql之日志管理(错误日志、慢日志、通用日志)

1.前言:

  日志对于Mysql的管理是非常重要的一节,常见的Mysql的日志主要包括错误日志(err.log)、慢日志(slow.log)、通用日志(general log)二进制日志(binlog)、redo log日志、undo log日志

2.Mysql的错误日志

  错误日志文件对Mysql的启动、运行、关闭过程中进行了记录,该日志不仅记录了所有的错误信息,也记录了一些警告信息和正确信息,可以通过如下命令查看错误日志存放的路径 

mysql> show variables like %log_err%;
+---------------------+----------------------+
| Variable_name       | Value                |
+---------------------+----------------------+
| binlog_error_action | ABORT_SERVER         |
| log_error           | /data/3310/mysql.log |
| log_error_verbosity | 3                    |
+---------------------+----------------------+

3.Mysql的慢日志(很重要)

  Mysql的慢日志其主要功能是帮助DBA定位数据库性能优化的,这里的数据库性能优化主要是关于以下sql语句上的优化,它的记录信息主要是针对配置参数所设定的阈值而定的。

slow_query_log=1    ##表示开启慢日志
slow_query_log_file = /data/mysql/slow.log ##慢日志保存路径
long_query_time = 0.1  该值是情况而定 ##设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s.所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.不要在这里使用”1″, 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).
log_queries_not_using_indexes =1  ##这个是记录没有走索引的sql语句
log_throttle_queries_not_using_indexes = 60  ###设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
min_examined_row_limit = 100  ###表示扫描的行数大于100行看,如果没有大于100行,即使这个语句执行时间超过了long_query_time的阈值也不会被记录。
log_slow_admin_statements = 1  #记录执行缓慢的管理SQL,如alter table,analyze table, check table, create index, drop index, optimize table, repair table等
log_slow_slave_statements = 1  ##记录从库上执行的慢查询语句

  3.1 常用的命令如下:

  • 如果用户希望得到执行时间最长的10条SQL语句,可以运行如下命令;
  mysqldumpslow -s c  -t 10  +慢日志文件
  • 这里也可以用percona-tools中的pt-query-digest工具分析慢日志(该工具会在Mysql工具篇中进行详细介绍) 

    3.2 如果这里我们想要看慢日志中某条sql语句具体执行时所消耗的cpu和内存情况,这个需要在执行sql语句前开启profiling,将其置为1 

root@192.168.11.8 09:26:  [employees]> show profiles ;
+----------+------------+---------------------------------+
| Query_ID | Duration   | Query                           |
+----------+------------+---------------------------------+
|        1 | 3.53482900 | select * from salaries          |
|        2 | 0.00061800 | select * from salaries limit 10 |
|        3 | 0.04657200 | help show profile             |
+----------+------------+---------------------------------+
3 rows in set, 1 warning (0.00 sec)

root@192.168.11.8 09:26:  [employees]> show profile cpu,block io for query 1;
+----------------------+----------+----------+------------+--------------+---------------+
| Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+----------------------+----------+----------+------------+--------------+---------------+
| starting             | 0.000182 | 0.000147 |   0.000025 |            0 |             0 |
| checking permissions | 0.000017 | 0.000014 |   0.000003 |            0 |             0 |
| Opening tables       | 0.000039 | 0.000032 |   0.000005 |            0 |             0 |
| init                 | 0.000082 | 0.000071 |   0.000013 |            0 |             0 |
| System lock          | 0.000026 | 0.000021 |   0.000003 |            0 |             0 |
| optimizing           | 0.000009 | 0.000007 |   0.000002 |            0 |             0 |
| statistics           | 0.000032 | 0.000027 |   0.000004 |            0 |             0 |
| preparing            | 0.000022 | 0.000019 |   0.000003 |            0 |             0 |
| executing            | 0.000007 | 0.000005 |   0.000001 |            0 |             0 |
| Sending data         | 3.521625 | 2.091546 |   0.005521 |         3496 |             0 |
| end                  | 0.006721 | 0.000000 |   0.001642 |         4184 |             0 |
| query end            | 0.000454 | 0.000000 |   0.000451 |          592 |             0 |
| closing tables       | 0.000027 | 0.000000 |   0.000022 |            0 |             0 |
| freeing items        | 0.000109 | 0.000080 |   0.000029 |            0 |             0 |
| logging slow query   | 0.005451 | 0.000090 |   0.000009 |            8 |             8 |
| cleaning up          | 0.000028 | 0.000020 |   0.000002 |            0 |             0 |
+----------------------+----------+----------+------------+--------------+---------------+
16 rows in set, 1 warning##这里的警告是该参数在以后的版本中会被移除,该信息以后会被收集到performance Schema

  3.3慢日志的分析之后会用pt-query-digest工具进行详解

4.Mysql之通用日志(general log)

  如果mysql要想记录数据中所有的操作,则必须要开启gener_log日志,和前面不同的是该日志参数只要开启后,对mysql不管有什么操作都会记录在该日志中,其中也包括了错误日志以及慢日志,不过该日志的开启会对性能有严重影响,因此在生产中不建议开启,我们可在调试阶段进行开启,另外该日志主要用途是用做审计的。我们可以通过插件的方式来做。

  4.1 可以通过如下命令进行配置

root@localhost 14:41:  [employees]> show variables like %general%;
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log      | OFF                        |              ##该选项表示是否开启
| general_log_file | /data/3307/data/node01.log |
+------------------+----------------------------+              ##通用日志存放的路径
2 rows in set (0.00 sec)

 

 

 

    

12.Mysql之日志管理(错误日志、慢日志、通用日志)

上一篇:MAC-OS系统安装MySQL后如何设置环境变量


下一篇:java.sql.SQLException: ORA-28040: 没有匹配的验证协议(odbc6.jar,数据库用的是orcal12)