zoukankan      html  css  js  c++  java
  • mysql日志

    日志文件

    日志文件记录mysql数据库的各种类型活动。常用日志有:错误日志、查询日志、慢查询日志、二进制日志。

    错误日志

    错误日志文件对mysql的启动、运行、关闭过程进行了记录。

    定位错误日志文件位置:

    mysql> show variables like 'log_error';
    +---------------+--------+
    | Variable_name | Value  |
    +---------------+--------+
    | log_error     | stderr |
    +---------------+--------+
    # stderr 代表错误输出;可在my.conf 设置log_error的存贮路径,如log_error = /data/mysql/mysql-error.log
    

    当mysql数据库不能正常启动时,第一个必须查找的文件就是错误日志文件,该文件记录了出错信息。

    慢查询日志

    慢查询能为SQL语句的优化带来很好的帮助。

    可以设一个阀值,将运行时间超过改制的所有SQL语句都记录到慢查询日志文件中。该阀值可以通过参数long_query_time来设置,默认值
    为10,代表10秒。

    show VARIABLES like '%long%';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    SHOW variables like 'log_slow_queries';
    

    配置:

    slow_query_log = 1     # 开启慢查询日志
    long_query_time = 10   # 阀值时间,默认10秒
    slow_query_log_file = /data/mysql/mysql-slow.log  # 慢查询日志存贮位置
    log-queries-not-using-indexes = on # 记录没有使用索引的query
    
    show VARIABLES like '%slow_query%';
    +---------------------+----------------------------------+
    | Variable_name       | Value                            |
    +---------------------+----------------------------------+
    | slow_query_log      | ON                              |
    | slow_query_log_file | /var/lib/mysql/msmaster-slow.log |
    

    注意两点:

    • 设置阀值后,mysql会记录运行时间超过该值的所有SQl语句,但对于运行时间正好等于阀值的情况并不会记录。即源代码里是判断大于long_query_time,而非大于等于。
    • log-queries-not-using-indexes 记录没有使用索引的query

    mysqldumpslow
    随着mysql运行时间累积,慢查询日志文件会越来越大,此时分析文件就显得不容易了。mysql提供mysqldumpslow命令:

    $ /usr/bin/mysqldumpslow /var/lib/mysql/msmaster-slow.log
    Reading mysql slow query log from /var/lib/mysql/msmaster-slow.log
    Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts
    
    #  -s,排序,c,t,l,r以及ac,at,al,ar分别是按照query次数,时间,lock时间,返回记录排序。加a就是倒序。
    #  -t,top n,跟上数字就是算出top多少条
    #  -g,跟正则表达式。
    
    $ /usr/bin/mysqldumpslow -s al -n 10  /var/lib/mysql/msmaster-slow.log; # 查询锁定最长的10条sql语句;
    

    mysql5.1开始可以将慢查询的日志记录放入一张表中,查询更加直观。慢查询表在mysql中名为slow_log。

    mysql> SHOW CREATE TABLE mysql.slow_log;
    *************************** 1. row ***************************
    Create Table: CREATE TABLE `slow_log` (
      `start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
      `user_host` mediumtext NOT NULL,
      `query_time` time(6) NOT NULL,
      `lock_time` time(6) NOT NULL,
      `rows_sent` int(11) NOT NULL,
      `rows_examined` int(11) NOT NULL,
      `db` varchar(512) NOT NULL,
      `last_insert_id` int(11) NOT NULL,
      `insert_id` int(11) NOT NULL,
      `server_id` int(10) unsigned NOT NULL,
      `sql_text` mediumblob NOT NULL,
        `thread_id` bigint(21) unsigned NOT NULL
      ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
    

    参数log_output指定慢查询输出格式,默认FILE,可以修改为TABLE,然后就可以查询slow_log表了。

    mysql> show variables like 'log_output';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    查询日志

    查询日志记录所有对mysql数据库请求的信息,不论这些请求是否得到正确的执行。默认文件名:主机名.log。

    查询日志甚至记录了对access denied的请求。从mysql5.1开始,可以将查询日志的记录放入mysql库中的general_log表中,用法与slow_log一样。

    二进制日志

    二进制日志记录了对数据库执行更改的所有操作,不包括select和show操作。二进制还包含了执行数据库更改操作的时间和执行时间等信息。

    主要作用:

    • 恢复:某些数据的恢复需要二进制日志。
    • 复制

    通过配置参数log-bin[=name]启动二进制日志。如果不指定name,默认以主机名,后缀为二进制日志额序列号,所在路径为数据库所在目录(datadir);

    mysql> show variables like 'datadir';
    +---------------+-----------------+
    | Variable_name | Value           |
    +---------------+-----------------+
    | datadir       | /var/lib/mysql/ |
    +---------------+-----------------+
    
    
  • 相关阅读:
    css之hover改变子元素和其他元素样式
    css实现俩端对齐的3种方法
    iOS开发——高级技术&内购服务
    iOS开发——高级技术&iCloud服务
    iOS开发——高级技术&PassBook服务
    iOS开发——高级技术&本地化与国际化详解
    iOS开发——高级技术&GameCenter服务
    iOS开发——高级技术&签名机制
    UIKit中的几个核心对象的介绍:UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
    Runtime之字典转模型实战
  • 原文地址:https://www.cnblogs.com/followyou/p/11288291.html
Copyright © 2011-2022 走看看