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;