MySQL日志类别:
一般查询日志:log,general_log,log_output
慢查询日志:查询执行的时长超过指定的查询,即为慢查询;
错误日志:通常时指错误日志的相关信息,通常用服务器关闭和启动的日志信息,服务器运行过程中的错误信息,还可以记录警告信息。
二进制日志:只是跟修改相关的操作,可以理解为一个重做日志,用于复制的基本凭据;
中继日志:它其实跟复制相关的,与二进制日志几乎相同;
事物日志:随机I/O转换为顺序I/O,一般在两个文件存储,一个存满了就换另外一个存
错误日志主要记录内容:
服务器启动和关闭过程中的信息;
服务器运行过程中的错误信息;
事件调度器运行一个事件时产生的信息;
在复制架构中从服务器上启动从服务器线程时产生的信息;
慢查询日志
该日志类型用来收集那些花费太长时间(超过指定时间)执行的SQL语句,该指定时间由long_query_time服务器变量设定。用--log-slow-queries[=file_name]选项启动,如果没有给出file_name值,默认未主机名,后缀为-slow.log,如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
慢查询日志可以用来找到执行时间长的查询,可以用于优化\,使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志。
二进制日志:
记录了对MySQL数据库进行的修改操作,,影响数据潜在的内容的信息,select的是不会被记录到二进制日志的,二进制日志也叫复制日志,默认在数据目录下,专门查看日志的命令是:mysqlbinlog
功能:1、做时间点恢复,要想从哪个时间点恢复我们可以手动调的,所以这是一个备份恢复的重要工具
2、 mysql主从复制架构中使用;
Binary log有三种format:
--binlog-format=STATEMENT:基于statement,顾名思义,不管对数据库有没有影响数据的sql statement都会存储在binary log里面
--binlog-format=ROW:基于row,是对表的行数据有影响的sql statement 存储在binary log里面
--binlog-format=MIXED:基于mixed,默认情况下使用statement-based logging,但是某些场合下logging mode会自动转化为 row -based
中继日志:它其实跟复制相关的,与二进制日志几乎相同,只不过它不是用于记录事件的,而是作为读取数据的源并且在本地执行的,当然中继日志是在从服务器上。
事务日志:
暂存事务提交的数据,实现将随机I/O转换成顺序I/O;
事务数据提交流程:innodb_buffer-->事务日志-->数据文件;
事务日志文件组,至少应该有2个日志文件,一般保存在数据目录下,为ib_logfile0和ib_logfile1;
是否启用了日志
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
显示二进制日志数目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
刷新日志
flush logs;
查看当前日志位置
show master status;
查看当前所有日志
show master logs;
清空所有的bin-log日志
reset master;
查看日志内容
mysqlbinlog –no-defaults mysql-bin.00001;
删除bin-log
mysql> purge binary logs to 'ablelee.000003'
log-bin=mysql-bin
binlog_format=mixed
显示所有日志
mysql> show binary logs;
查询当前日志记录的状况:
mysql>show variables like 'log_%';(是否启用了日志)
mysql> show master status;(怎样知道当前的日志)
mysql> show master logs;(显示二进制日志的数目)
回放日志事件:
mysql> show binlog events;