zoukankan      html  css  js  c++  java
  • MySQL二进制日志binlog简单使用

             MySQL数据库进行了哪些CUD操作,通过binlog二进制文件可以查看。binlog不仅可以记录CUD的操作(select操作不包括在内),还是主从备份的基础。主库的操作记录成binlog文件,定期地从主库拷贝到从库。实际中使用binlog要考虑到文件大小的问题,要有定期删除的功能,否则会积累大量的文件。

            

             在my.ini下添加:

             log-bin=mysql-bin

             long_query_time=0.1

             log-slow-queries="Tempslow.log"

             log-queries-not-using-indexes=TRUE

             log-error="Templog-error.log"

             上面的配置将打开binlog记录功能,缓慢查询的记录功能,错误查询的记录功能等。

             mysql> show variables like '%datadir%';

      +---------------+----------------------+

      | Variable_name | Value                |

      +---------------+----------------------+

      | datadir       | D:NNM5MySQL5data |

      +---------------+----------------------+

      1 row in set (0.00 sec)

      mysql> show master status;

      +------------------+----------+--------------+------------------+

      | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

      +------------------+----------+--------------+------------------+

      | mysql-bin.000001 |   170435 |              |                  |

      +------------------+----------+--------------+------------------+

          则现在正在使用的binlog文件是D:NNM5MySQL5datamysql-bin.000001

          日志文件的生成将遵循如下规则:

          1. 每天生成一个新的文件,例如每天将生成mysql-bin.000002

          2. 文件大小超过设置的值时将生成新的文件:      

      mysql> show variables like '%max_binlog%';
      +----------------------------+----------------------+
      | Variable_name                   | Value                       |
      +----------------------------+----------------------+
      | max_binlog_cache_size      | 18446744073709547520 |
      | max_binlog_size                | 1073741824             |
      | max_binlog_stmt_cache_size | 18446744073709547520 |
      +----------------------------+----------------------+

             希望查看进行了哪些数据库操作,可以使用mysql自带的工具mysqlbinlog.exe

             D:NNM5MySQL5in>mysqlbinlog D:NNM5MySQL5datamysql-bin.000001

             可以看到类似下面的输出,从中可以找到已有的操作。

             SET TIMESTAMP=1415604740/*!*/;

      update versions set ver = "1.0.2" where module = 'WebNATService'

      /*!*/;

      # at 12755

      #141110 15:32:20 server id 1  end_log_pos 12782         Xid = 188

      COMMIT/*!*/;

      # at 12782

      #141110 15:32:23 server id 1  end_log_pos 12850         Query   thread_id=3     exec_time=0     error_code=0

      SET TIMESTAMP=1415604743/*!*/;

      BEGIN

      /*!*/;

      # at 12850

      #141110 15:32:23 server id 1  end_log_pos 13123         Query   thread_id=3     exec_time=0     error_code=0

      SET TIMESTAMP=1415604743/*!*/;

      另外MySQL安装目录data目录下的ib_logfile0和ib_logfile1虽然也是二进制文件,但是是记录innodb的操作,是不能使用mysqlbinlog.exe来查看的。

      MySQL无法启动或者启动时的一些遗产可以查看MySQL安装目录data目录下的RCYF-2265.err,其中RCYF-2265是操作系统的用户名。

          注意:

           开启了二进制文件而且数据库中有函数或存储过程,可能在数据库运行过程中会出现下面的错误:

      you *might* want to use the less safe log_bin_trust_function_creators variable

           出现上面的异常时,my.ini中需要添加:log-bin-trust-function-creators=1

      如果程序中有大量的sql操作时,记录日志就意味着大量的IO操作,会记录大量日志文件,影响软件的性能。慢查询的时间也需要考虑,太短会有问题,会记录到大部分的查询,影响系统的性能。

  • 相关阅读:
    杂记
    [POI2015]PUS
    CF786B Legacy(线段树优化建图)
    SP11470 TTM
    [WC2010]重建计划
    [HNOI2014]世界树
    luogu P4842 城市旅行
    [SDOI2016]征途
    [APIO2014]序列分割
    上下界网络流构图证明
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4087486.html
Copyright © 2011-2022 走看看