• 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

  • 相关阅读:
    ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]
    深入理解DIP、IoC、DI以及IoC容器(转)
    IoC模式(转)
    asp.net控件开发基础(1)(转)原文更多内容
    WPF/Silverlight HierarchicalDataTemplate 模版的使用(转)
    WPF的Presenter(ContentPresenter)(转)
    WPF/Silverlight Template使用及总结(转)
    .NET中异常处理的最佳实践(转)
    Objective-C专题,是学习iOS开发的前奏(转)
    浅析C#中的Attribute(转)
  • 原文地址:https://www.cnblogs.com/zx3212/p/7143754.html
Copyright © 2020-2023  润新知