MYSQL日志类型和日志工具

MYSQL日志用于记录数据库服务器的活动情况,常用日志文件学习参考如下。


1.Error log:  用于记录数据库服务器的启动,关闭过程以及在启动,运行过程中发生的错误。变量如下:

》log_error:用于指定错误日志文件

》log_error_verbosity:用于指定在日志文件中记录什么样的信息,可选参数:-1 errors only    -2 errors and warnings -3errors,warnings,and notes(默认值)

》log_timestamps:日志中时间的格式,可选值为UTC或者SYSTEM

2.General Query Log  :用于记录MYSQL在做什么,当客户端产生或者端来链接,产生日志,客户端的SQL语句,链接信息,所用协议TCP/IP,SOCKET,将按接收顺序记录在日志中

》log_output:用于指定日志记录在什么地方,可选值为TABLE,FILE,NONE之一或多个,逗号分开,其中NONE优先(None,表示服务器不产生这类日志,FILE代表日志被写入日志文件,TABLE表示这类日志被写入数据库的general_log表中)。例如:mysql> set global log_output='FILE,TABLE';

》general_log:用于enable或disable日志

》general_log_file:用于指定日志文件的名称。如果没有指定文件名称,则采用hostname.log为文件名称,如果指定相对路径,则相对于datadir,将记录创建用户,修改用户口令的相关SQL语句,但不记录明文指令。启动og-raw,任何SQL语句都将原样记录在日志中。                                                                                  sql_log_off用于关闭或打开当前会话中的GeneralQuery Log。

3.Binary Log 用于记录那些引起数据库变化的事件,如表的创建,数据的变化,以及每条SQL语句执行所用的时间,包括可能引起数据变化的用户访问,例如没有删除任何数据的DELETE和没有修改任何数据的UPDATE,但是SELECT和SHOW不会被记录在日志中,因为这些并不引起数据的变化。

Binarylog主要作用:数据库的恢复(当数据库出现故障时,利用以前所做备份,把数据库恢复到最后的备份点,然后利用日志,把数据库恢复到最后的故障点)和数据库的复制(master服务器将日志发送到slave服务器,slave根据日志产生数据)

有关选项:mysqld在启动时,需要使用以下选项

-log_bin:用户指定日志文件的名称,实际的文件名称加附加000001这样的编号,文件默认存储在datadir中,除非指定绝对路径  -log_bin_index:指定索引文件的名称,默认与日志文件的名称相同,以.index为扩展名,记录已经产生的日志文件-server-id 为当前服务器指定一个编号-log_bin_basename:代表日志文件的完整路径,无需设置仅仅是查看。-sql_log_bin用于当前回话中关闭(0)或者打开(1)binary log

Binary log文件大小的设置:-全局变量max_binlog_size用于设置日志文件的大小(默认是1G),当数据库服务器重启或者用户进行flush log时候,将按照编号顺序,产生一个新的日志文件,即使文件没有达到设定的最大值。当用户执行一个大的事务时候,相关日志将被写入同一个日志,此时文件可能超过指定的大小

Binary log格式的设置:日志的格式将影响数据从master到salve的复制。-statement格式,master将SQL语句写入日志,slave将执行这样的SQL语句,产生相应的数据。-row,master将事件写入日志,事件表明表中的每行数据是如何变化的。Slave拷贝这样的事件,产生相应的数据.-mixed:•服务器自动决定使用上述哪种格式,默认使用statement格式,在适当的时候切换为row格式.                                                                            动态变量binlog_format用于设置日志格式:                    mysql> set global binlog_format=stream;                                                                                 如果在会话中设置该变量,只影响当前会话中的日志格式。如mysql> set session binlog_format=row;

4. SLOW Query Log:•用于记录那些执行时间过长,并且访问过多数据的SQL语句,动态变量long_query_time用于限定SQL语句的执行时间,单位为秒.动态变量min_examined_row_limit用于限定SQL语句访问的数据行数

Slow Query Log的设置:动态变量slow_query_log用于开启(1)或关闭(0)日志。动态变量slow_query_log_file用于指定日志文件名称,默认为hostname-slow.log,文本文件。如果指定相对路径,则相对于datadir。•动态变量log_output用于指定日志被写入的地方,可选值为FILE,TABLE,NONE之一或多个,例如:mysql> set global log_output='FILE,TABLE';•动态变量log_slow_admin_statements用于指定是否记录那些执行时间过长的管理类SQL语句。例如:mysql> set global log_slow_admin_statements =1;管理类SQL语句包括:–ALTERTABLE–ANALYZETABLE–CHECKTABLE–CREATEINDEX–DROPINDEX–OPTIMIZETABLE–REPAIRTABLE。•动态变量log_queries_not_using_indexes用于指定是否记录那些不使用索引的查询语句,默认为OFF。例如:mysql> set global log_queries_not_using_indexes=1;

两个工具

---mysqldumpslow                                                                                                                                                                                                                                        当slow query log 文件越来越大时,查看文件越来越困难,mysqldumpslow用于对日志文件进行分析,显示结果,能将SQL语句进行分组显示

---mysqlbinlog                                                                                                                                                                                                                                                mysqlbinlog工具用于将二进制文件的日志文件内容以文本的方式显示,如:mysqlbinlog 选项 日志文件


你可能感兴趣的:(MYSQL日志类型和日志工具)