MySQL日志相关

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL日志相关相关的知识,希望对你有一定的参考价值。

mysql日志:
查询日志:query log
慢查询日志:查询执行时长超过指定时长的查询操作所记录日志 #slow query log
错误日志:error log 包括服务自己启动或关闭的正常信息
二进制日志:binary log 非常重要的日志,数据恢复
中继日志:reley log MySQL复制中用到的日志
事务日志:transaction log
ACID, 随机I/O转换为顺序I/O

1、查询日志:
    记录查询操作:
        记录在文件中:file
            表中:table
    mysql> SHOW GLOBAL VARIABLES LIKE ‘%log%‘;

    log_output = {TABLE|FILE|NONE}
        log_output = TABLE,FILE,NONE
        FILE: gerenal_log
    general_log = {ON|OFF}: 是否启用查询日志
    general_log_file = HOSTNAME.log:当log_output有FILE类型时,日志信息的记录位置;

2、慢查询日志:
    查询时长超过指定时长的查询操作:
    mysql> SELECT @@GLOBAL.long_query_time;  #查看执行的指定时长
    +--------------------------+
    | @@GLOBAL.long_query_time |
    +--------------------------+
    |                10.000000 |
    +--------------------------+
    1 row in set (0.01 sec)

    mysql> SHOW GLOBAL VARIABLES LIKE ‘long_query_time‘;
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set (0.00 sec)
    mysql> SET GLOBAL long_query_time=‘‘;  #设置临时修改,如需要永久生效,需要写入配置文件

    slow_query_log = {ON|OFF}:是否启用慢查询日志
    slow_query_log = /path/to/somefile: 日志文件路径

    log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
        慢查询日志过滤器,哪一种查询需要记录,哪种不需要记录
    log_slow_rate_limit =       #指明记录的速率
    log_slow_verbosity =        #详细级别

3、错误日志:#默认是不开启的
    记录的并非完全的错误日志信息,记录MySQL的正常启动与关闭的日志信息

    mysqld启动和关闭过程中输出的信息;
    mysqld运行中产生的错误信息;
    event scheduler运行一个event时产生的日志信息;
    在主从复制架构中的从服务器上启动从服务器线程时产生的日志信息;

    log_error = /path/to/somefile   #指向绝对路径
    log_warnings = {ON|OFF}:1|0 也是可以的,#是否记录警告信息于错误日志中;

4、二进制日志:不能使用cat等命令打开,可能会导致文件损坏
    记录导致数据改变或潜在导致数据改变的SQL语句;
    功能:用于通过“重放”日志文件中的事件来生成数据副本;
    SHOW {BINARY | MASTER} LOGS:查看主服务器端处于由mysqld维护状态中的二进制日志文件;
    SHOW MASTER STATUS: 查看使用的二进制日志文件;
    SHOW BINLOG EVENTS [IN ‘log_name‘] [FROM pos] [LIMIT [offset,] row_count]:显示指定的二进制日志文件中的相关事件

    二进制日志记录格式:
        基于“语句”记录;statement
        基于“行”记录;row

        “混合模式” :mixed,让系统自动判定该基于那种方式进行;

    二进制日志文件的构成:
        两类文件
            日志文件:文件名前缀.文件名后缀    
            索引文件:文件名前缀.index   #文本格式

    服务器变量:
        log_bin = /path/to/somefile   二进制日志记录的文件位置,通常为OFF
        binlog_format = STAETMENT|ROW|MIXED 二进制日志记录的格式;
        sql_log_bin = ON   是否记录二进制日志
        max_binlog_size = 1073741824  #单个二进制日志文件的最大体积,默认是1G;
            注意:(1)到达最大值会自动滚动;(2)文件到达上限时的大小未必会到达指定的最大值
            二进制日志文件的单文件上限;
        max_binlog_cache_size = 18446744073709547520
        max_binlog_stmt_cache_size = 18446744073709547520
        expire_logs_days = 0 二进制日志的自动清理功能默认设置为0,不启动该功能。

        sync_binlog = 0|1:设定多久同步一次二进制日志文件;
            0表示不同步;任何正值都表示记录多少个语句后同步一次;
            1表示同步数据,当遇到事务commit时将进行二进制日志同步一次;

    二进制日志事件的格式:

        # at 19364
        #140829 15:50:07 server id 1  end_log_pos 19486     Query   thread_id=13    exec_time=0 error_code=0
        SET TIMESTAMP=1409298607/*!*/;
        GRANT SELECT ON tdb.* TO [email protected]
        /*!*/;
        # at 19486

        事件发生的日期和时间;(140829 15:50:07)
        事件发生在服务器的标识(server id)
        事件的结束位置:(end_log_pos 19486)下一个事件的起始位置
        事件的类型:(Query)
        事件发生时所在的服务器执行此事件的线程的ID:(thread_id=13)
        语句的时间戳与将其写入二进制文件中的时间差:(exec_time=0)
        错误代码:(error_code=0)
        事件内容:(SET TIMESTAMP=1409298607/*!*/;
                    GRANT SELECT ON tdb.* TO [email protected])                       

        GTID事件专属:Global Rransction ID;
        事件所属的全局事务的GTID:(GTID 0-1-2)

    二进制日志的查看命令:
        mysqlbinlog:客户端命令工具
        查看二进制文件事件信息
        mysqlbinlog [OPTIONS] log_files
        ./mysqlbinlog   /usr/log/mysql-bin.000003   二进制文件的觉得路径

        mysqlbinlog
            -j, --start-position=#:从指定的事件位置查看
            --stop-position=#:只显示到指定的事件位置

            --start-datetime=name
            --stop-datetime=name
                YYYY-MM-DD hh:mm:ss

            -u
            -h
            -p

5、中继日志:
    复制架构中,从服务器用于保存从主服务器的二进制日志中读取到的事件;

6、事务日志(innodb存储引擎):
    帮助事务性存储引擎保存数据的,事务型存储引擎自行管理和使用的;
    事务型存储引擎自行管理和使用
    redo log
    undo log

以上是关于MySQL日志相关的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

MySQL的日志相关内容

MySQL日志相关

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

mysql引擎和mysql日志相关总结

Mysql相关的各种类型文件