zoukankan      html  css  js  c++  java
  • MySQL系列详解三:MySQL中各类日志详解-技术流ken

    前言

    日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 。下面分别对他们进行介绍。

    查询日志

    1.查看查询日志变量

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

    mysql> show global variables like "%gen%log%";
    +------------------+------------------------------------+
    | Variable_name    | Value                              |
    +------------------+------------------------------------+
    | general_log      | OFF                                |
    | general_log_file | /data/mysql/mysql3306/data/ken.log |
    +------------------+------------------------------------+
    2 rows in set (0.00 sec)

     

    2.查询日志变量详解

    1 log on|off:                 指定是否记录查询日志     <<< mysql5.6开始就弃用该选项
    2 general_log:                指定是否记录查询日志
    3 log_output none|table|file: 指定将记录到的查询保存到什么位置
    4 file:                       保存成一个文件
    5 table:                      保存成一张表
    6 none:                       不记录
    7 general_log_file:           指定将查询日志保存成哪个文件、叫什么名

    慢查询日志

    1.查看慢查询日志变量

    慢查询日志用来记录响应时间超过阈值的SQL语句,所以我们可以设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。该阈值可以通过参数 slow_launch_time来设置,默认为2秒。

     1 mysql> show global variables like "%slow%";
     2 +---------------------------+----------+
     3 | Variable_name             | Value    |
     4 +---------------------------+----------+
     5 | log_slow_admin_statements | OFF      |
     6 | log_slow_slave_statements | ON       |
     7 | slow_launch_time          | 2        |
     8 | slow_query_log            | ON       |
     9 | slow_query_log_file       | slow.log |
    10 +---------------------------+----------+
    11 5 rows in set (0.00 sec)

    2.慢查询日志变量详解

    1 slow_query_log on|off:  指定是否启用慢查询日志
    2 slow_query_log_file:    指定慢查询日志文件
    3 slow_launch_time:       指定在多长时间内没有执行完额查询是慢查询
    4 log_output:             指定将记录到的查询保存到什么位置

    错误日志

    1.查看错误日志变量

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

     1 mysql> show global variables like "%error%";
     2 +---------------------+--------------+
     3 | Variable_name       | Value        |
     4 +---------------------+--------------+
     5 | binlog_error_action | ABORT_SERVER |
     6 | log_error           | ./error.log  |
     7 | log_error_verbosity | 3            |
     8 | max_connect_errors  | 100000       |
     9 | max_error_count     | 64           |
    10 | slave_skip_errors   | OFF          |
    11 +---------------------+--------------+
    12 6 rows in set (0.00 sec)

    2.错误日志变量详解

    1 log_error:        指定错误日志的文件及其路径
    2 log_warnings:     指定将哪个级别的警告日志记录到错误日志中
    3 sql_warnings:     指定是否记录在执行sql语句时候所触发的经过信息

    二进制日志

    1.关于二进制日志以及二进制日志变量

    二进制日志记录了对数据库执行更改的所有操作,但是不包括 select 和 show 这类操作,因为这类操作对数据本身并没有修改,如果你还想记录select和show操作,那只能使用查询日志了,而不是二进制日志。

    此外,二进制还包括了执行数据库更改操作的时间和执行时间等信息。 二进制日志主要有以下几种作用 :

    • 恢复(recovery) : 某些数据的恢复需要二进制日志,如当一个数据库全备文件恢复后,我们可以通过二进制的日志进行 point-in-time 的恢复
    • 复制(replication) : 通过复制和执行二进制日志使得一台远程的 MySQL 数据库(一般是slave 或者 standby) 与一台MySQL数据库(一般为master或者primary) 进行实时同步
    • 审计(audit) :用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击
     1 mysql> show global variables like "%bin%";
     2 +--------------------------------------------+--------------------------------------------+
     3 | Variable_name                              | Value                                      |
     4 +--------------------------------------------+--------------------------------------------+
     5 | bind_address                               | *                                          |
     6 | binlog_cache_size                          | 1048576                                    |
     7 | binlog_checksum                            | CRC32                                      |
     8 | binlog_direct_non_transactional_updates    | OFF                                        |
     9 | binlog_error_action                        | ABORT_SERVER                               |
    10 | binlog_format                              | ROW                                        |
    11 | binlog_group_commit_sync_delay             | 0                                          |
    12 | binlog_group_commit_sync_no_delay_count    | 0         
    ...

    2.二进制日志变量详解

     1 log_bin on|off:                         也是指定是否启用二进制日志(全局的)
     2 log_bin_basename /path/to/binlog:       指定二进制日志的文件的基名
     3 log_bin_index /path/to/binlog.index:    指定二进制日志文件的索引文件
     4 binlog_format row|mixex|statement:      指定基于那种方式进行记录
     5 sync_binlog #:                          指定隔多久将缓存中的信息刷新到二进制日志文件中。
     6                                       -->每次提交事务,会将缓存中的内存刷新到二进制日志文件中。
     7                                       -->默认每个sql语句是一个事务,而且默认事务会自动提交,所以,默认的性能很差
     8 max_binlog_size #:                      指定二进制日志文件的上限,超过上限回滚动
     9 max_binlog_cache_size  #:               指定二进制日志缓存空间大小,空间被填满,会自动滚动
    10 sql_log_off on|off:                     是否将一般的查询操作记录到二进制日志中
    11 sql_log_bin on|off:                     也是指定是否启用二进制日志(会话级别)
    12 log_bin_trust_function_creators on|off: 指定是否允许创建可能导致不安全的函数

     3.查看二进制日志文件

    对于二进制日志文件来说,不像错误日志文件,慢查询日志文件那样用cat,vim等命令可以查看,它需要通过 MySQL 提供的工具 mysqlbinlog

     1 [root@ken ~]# mysqlbinlog /data/mysql/mysql3306/logs/mysql-bin.000001 
     2 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
     3 /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
     4 DELIMITER /*!*/;
     5 # at 4
     6 #181012  0:34:24 server id 1003306  end_log_pos 123 CRC32 0x27fde4a9     Start: binlog v 4, server v 5.7.23-log created 181012  0:34:24 at startup
     7 ROLLBACK/*!*/;
     8 BINLOG '
     9 kHu/Ww8qTw8AdwAAAHsAAAAAAAQANS43LjIzLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    10 AAAAAAAAAAAAAAAAAACQe79bEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
    11 Aank/Sc=
    12 '/*!*/;
    13 # at 123
    14 #181012  0:34:24 server id 1003306  end_log_pos 154 CRC32 0x4e3fc05f     Previous-GTIDs
    15 # [empty]
    16 # at 154
    17 #181012  0:34:26 server id 1003306  end_log_pos 177 CRC32 0x368d3215     Stop
    18 SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
    19 DELIMITER ;
    20 # End of log file
    21 /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    22 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

    中继日志

    1.查看中继日志日志变量

    用于实现mysql的主从复制

     1 mysql> show global variables like "%relay%";
     2 +---------------------------+--------------------------------------------+
     3 | Variable_name             | Value                                      |
     4 +---------------------------+--------------------------------------------+
     5 | max_relay_log_size        | 134217728                                  |
     6 | relay_log                 | relay-bin                                  |
     7 | relay_log_basename        | /data/mysql/mysql3306/data/relay-bin       |
     8 | relay_log_index           | /data/mysql/mysql3306/data/relay-bin.index |
     9 | relay_log_info_file       | relay-log.info                             |
    10 | relay_log_info_repository | FILE                                       |
    11 | relay_log_purge           | ON                                         |
    12 | relay_log_recovery        | ON                                         |
    13 | relay_log_space_limit     | 0                                          |
    14 | sync_relay_log            | 10000                                      |
    15 | sync_relay_log_info       | 10000                                      |
    16 +---------------------------+--------------------------------------------+
    17 11 rows in set (0.00 sec)

    2.二进制日志变量详解

    1 relay_log fileName:       指定中继日志的文件名。【文件名为空,表示禁用了中继日志】
    2 relay_log_index:          索引表
    3 relay_log_info_file:      记录中继日志文件的相关信息
    4 relay_log_purge:          指定是否自动删除无用的中继日志文件
    5 relay_log_recovery:       是否可以对中继日志做自动恢复相关的配置
    6 relay_log_space_limit:    指定中继日志可以占用的空间大小(0表示不限制)

     3.SQL线程应用中继日志流程

  • 相关阅读:
    将Word,PDF文档转化为图片
    图像识别
    ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
    检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005" 《终结篇》
    wireshark抓包图解 TCP三次握手/四次挥手详解
    经常开发出现bug的同事,
    简单理解Socket
    eclipse下如何配置tomcat
    Windows 7系统安装MySQL5.5.21图解
    Tomcat7.0.22在Windows下详细配置过程
  • 原文地址:https://www.cnblogs.com/kenken2018/p/9818266.html
Copyright © 2011-2022 走看看