Mysql数据库日志文件

       日志文件记录了影响Mysql数据库的各种类型活动,Mysql数据库中常见的日志文件有:

  •  错误日志
  •  二进制日志
  •  慢查询日志
  •  查询日志

        这些日志文件可以帮助DBA对数据库的运行状态进行诊断。从而更好地进行数据库底层的优化。

       1.错误日志

       错误日志文件对mysql的启动,运行,关闭过程进行了记录。Mysql DBA在遇到问题时首先应该产看该文件以便定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确信息。用户可以通过命令: 

SHOW VARIABLES LIKE 'log_error'

来定位该文件。

     2.慢查询日志

     慢查询日志可以帮助DBA定位可能存在问题的SQL语句,从而进行SQl语句层面的优化。例如,可以在mysql启动的时候设置一个阈值,将运行时间超过该值的所有sql语句都记录到慢查询日志文件里。该阈值可以通过参数 long_query_time 来设置,默认值位10,代表10秒。慢查询日志只记录运行时间大于该阈值的sql语句。默认情况下该日志为关闭状态。

    3.查询日志

    查询日志记录了所有对mysql数据库请求的信息,无论这些请求是否得到了执行。默认文件为:主机名.log。

    4.二进制日志

    二进制日志记录了对mysql数据库执行更改的所有操作,但是不包括 select和show这类操作

    二进制日志主要有以下几种作用。

  •     恢复 :某些数据的恢复需要二进制日志,例如,在一个数据库全备文件恢复后,用户可以通过二进制日志进行point_in_time的恢复。
  •     复制:其原理与恢复类似,通过复制和执行二进制日志使得一台远程的mysql数据库与一台mysql数据库进行实时同步。
  •     审计: 用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击

   该日志默认情况下也是关闭的。

  二进制日志支持STATEMENT,ROW,MIXED. 三种格式。

(1) statement格式,二进制日志文件记录的是日志的逻辑sql语句。

(2)row格式:二进制日志记录记录的不再是简单的sql 语句,而是记录表的行更改情况。

(3)mixed格式:mysql默认采用statement格式进行二进制日志文件的记录。但是在一些情况下会使用row格式。如:

  1.   表的存储引擎为NDB,
  2. 使用了UUID(),USER(),CURRENT_USER(),FOUND_ROWS().等不确定函数。
  3. 使用了INSERT DELAY语句。
  4. 使用了用户定义函数。
  5. 使用了临时表。

   使用row格式时,可以对数据库的恢复和复制带来更好的可靠性,但也会增大二进制文件的大小。

 

 

 

你可能感兴趣的:(数据库)