MySQL中有4种不同的日志,分别是错误日志,二进制日志,查询日志,慢查询日志。
错误日志
记录了错误信息,当数据库出现错误时,查看该日志。
二进制日志(binlog)
binlog 记录了所有的DDL(数据定义语言)和DML(数据操纵语言),但是不包括数据查询语句。
binlog对数据恢复有着极其重要的作用,MySQL的主从复制,就是通过binlog实现的。
日志格式
STATEMENT
该日志格式中记录的都是SQL语句,每一条对数据进行修改的SQl都会记录在日志文件中,通过mysql提供的mysqlbinlog工具,可以清晰地查看到每条语句的文本。主从复制时,slave 会将日志解析为原文本,并在slave 重新执行一次。
ROW
该日志在日志文件中记录的是每一条数据的变更,而不是记录SQL语句。
MIXED
默认的日志格式,混合了STATEMENT和ROW两种格式。默认情况下采用STATEMENT,但在一些特殊情况下采用ROW来进行记录。MIXED 格式能尽量利用两种模式的优点,而避开它们的缺点。
日志删除
- Reset Master,删除所有binglog日志。
- purge master logs to 'mysqlbin.',该命令将删除编号之前的所有日志。
- purge master logs brfore ‘yyyy-mm-dd hh24:mi:ss’,该命令将删除 yyyy-mm-dd hh24:mi:ss 之前的所有日志。
- 设置参数 --expire_logs_days=#,设置日志过期天数。
查询日志
查询日志记录了客户端所有的操作语句,而二进制日志不包含查询数据的SQL语句,默认情况下未开启。
慢查询日志
慢查询日志记录了所有执行时间超过参数long_query_time 设置值并且扫描记录数不小于 min_examined_row_limit 的所有SQL语句的日志,long_query_time默认是10秒,最小为0,精度可以控制到微秒。