日志文件记录了影响Mysql数据库的各种类型活动,Mysql数据库中常见的日志文件有:
- 错误日志
- 二进制日志
- 慢查询日志
- 查询日志
这些日志文件可以帮助DBA对数据库的运行状态进行诊断。从而更好地进行数据库底层的优化。
1.错误日志
启动,运行,关闭过程进行了记录。Mysql DBA在遇到问题时首先应该产看该文件以便定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确信息。用户可以通过命令:
SHOW VARIABLES LIKE 'log_error'
来定位该文件。
2.慢查询日志
定位可能存在问题的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格式。如:
- 表的存储引擎为NDB,
- 使用了UUID(),USER(),CURRENT_USER(),FOUND_ROWS().等不确定函数。
- 使用了INSERT DELAY语句。
- 使用了用户定义函数。
- 使用了临时表。
使用row格式时,可以对数据库的恢复和复制带来更好的可靠性,但也会增大二进制文件的大小。