zoukankan      html  css  js  c++  java
  • MySQL的日志

    • Error log:错误日志
    • Query Log:查询日志    general query log/slow query log:超过设定时间(long_query_time)或者没走索引的语句
    • Binary Log:二进制日志,记录数据被修改的相关信息


    开启查询日志(一般不开):

    mysql> show variables like 'general_log%';
    +------------------+---------------------------+
    | Variable_name    | Value                     |
    +------------------+---------------------------+
    | general_log      | ON                        |
    | general_log_file | /data/3307/data/MySQL.log |
    +------------------+---------------------------+

    2 rows in set (0.00 sec)

    慢查询参数
    long_query_time=1  #查询超过1秒钟的
    slow_query_log_file = /data/3307/log/mysql-slow.log #日志路径
    log_queries_not_using_indexes  #没使用索引的语句
    slow_query_log = 1


    二进制日志

    mysql> show variables like '%log_bin%';
    +---------------------------------+---------------------------------+
    | Variable_name                   | Value                           |
    +---------------------------------+---------------------------------+
    | log_bin                         | ON                              |
    | log_bin_basename                | /data/3307/data/mysql-bin       |
    | log_bin_index                   | /data/3307/data/mysql-bin.index |
    | log_bin_trust_function_creators | OFF                             |
    | log_bin_use_v1_row_events       | OFF                             |
    | sql_log_bin                     | ON                              |
    +---------------------------------+---------------------------------+
    6 rows in set (0.00 sec)


    错误日志
    log_error = /data/3307/log/mysql-error.log


    二进制日志三种工作模式:
    1、statement level:
    每一条会修改数据的sql都会记录到master的bin-log中,slave在复制的时候sql进程会解析成和原来master端执行郭的相同sql来再次执行
    优点:解决了row level下的缺点,不需要记录每一行数据的变化,减少bin-log日志量,节省IO,只记录master上执行的sql及上下文信息
    缺点:很多情况下会有复制问题出现,在使用函数,存储过程等

    2、row level
    日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改
    优点:不记录执行sql上下文信息,只记录哪一行被修改,可以解决存储过程,function,trigger的调用和触发无法被正确复制的问题。
    缺点:记录一条语句改变的每行,日志量大,特别是表结构发生变化的时候。

    3、mixed
    根据执行的每一条具体sql来区分对待日志形式,例如遇到表结构改变等,就会用statement level模式,如果sql语句update,delete等修改数据的语句,会记录所有行的变更。

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

    配置文件修改:
    binlog_format=STATEMENT,ROW,MIXED

    会话级别修改:set session binlog_format="STATEMENT","ROW","MIXED"
    全局级别修改:set global binlog_format="STATEMENT","ROW","MIXED"


    下面这条命令,可以将row模式下的binlog解析成statement模式进行分析
    [root@MySQL data]# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000006

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

    mysql> set session binlog_format="row";
    Query OK, 0 rows affected (0.00 sec)

    mysql> 
    mysql> 
    mysql> show variables like '%binlog_format%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | binlog_format | ROW   |
    +---------------+-------+
    1 row in set (0.01 sec)

    mysqlbinlog -->解析mysql的bin-log日志

    mysqlbinlog mysql-bin.0000001 --start-position=234 --stop-position=345 -r full.sql

  • 相关阅读:
    Github.Git
    android 环境的配置
    如何在Virtual box 下安装Mac os
    如何下载google play商店里面的app?
    神奇的网站
    pycharm使用总结
    软件测试 -- SQL注入测试
    win10 下mysql环境变量配置
    NStask
    在pycharm 中使用 GitHub:
  • 原文地址:https://www.cnblogs.com/zx3212/p/7143754.html
Copyright © 2011-2022 走看看