错误日志文件对MySQL的启动、运行、关闭过程进行了记录。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息。 查看命令:SHOW VARIABLES LIKE 'log_error'运行后可查看错误文件的路径和文件名。 当数据库不能正常启动时,第一个必须查找的文件就是错误日志文件,该文件记录了错误信息,能很好的指导用户发现问题。
慢查询日志(slow query log)
慢查询日志可帮助DBA定位可能存在问题的SQL语句,从而进行SQL语句层面的优化。 在默认情况下,MySQL数据库并不启动慢查询日志,用户需要手工将这个参数设为ON:SET GLOBAL slow_query_log=on; 查看超时阈值:SHOW VARIABLES LIKE 'long_query_time'; 查看慢查询是否开启:SHOW VARIABLES LIKE 'log_slow_queries'; 首先设置long_query_time这个阈值后,MySQLh数据库会记录运行时间超过该阈值的所有SQL语句,但运行时间正好等于阈值的情况并不会被记录下来。 另一个和慢查询日志有关的参数是log_queries_not_using_indexs,查看其状态:SHOW VARIABLES LIKE 'log_queries_not_using_indexes'; 参数log_throttle_queries_not_using_indexes,用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数。该值默认为0,表示没有限制。在生产环境下,若没有使用索引,此类SQL语句会频繁地被记录到slow log中从而导致slow log文件的大小不断增加,故DBA可通过该参数进行配置。 MySQL提供mysqldumpslow命令帮助DBA解决日志越来越多的日志文件直观问题。
参数
作用
-v
verbose
-d
调试
-s ORDER
按照(al,at,ar,c,l,r,t)排序,默认值为at
参数
含义
al
average lock time
ar
average rows sent
at
average query time
c
count
l
lock time
r
rows sent
t
query time
-r
反转排序
-t NUM
仅查看前n行结果
-a
不将所有的数字抽象为N,字符抽象为'S'
-n NUM
数字至少抽象为n位
-g PATTERN
相当于grep,只选取匹配后的字符
-h HOSTNAME
数据库服务器名
-i NAME
实例服务名
-l
不从总时间中扣除锁定时间
参数log_output指定了慢查询输出的格式,默认为FILE,可以将其改为TABLE,然后就可以查询mysql架构下的slow_log表了: mysql> SHOW VARIABLES LIKE 'log_output'; mysql> SET GLOBAL log_output='TABLE'; 用户可以通过额外的参数long_query_io将超过指定逻辑IO次数的SQL语句记录到slow log中,该值默认位100。参数slow_query_type用来表示slow log的方式,可选值为:
当使用事务的表存储引擎时,所有未提交的二进制日志会被记录到一个缓存中去,该事务提交时直接将缓冲中的二进制日志写入二进制文件,该缓冲的大小由binlog_cache_size决定,默认大小为32k。此外binlog_cache_size是基于会话的,当一个线程开始一个事务时,MySQL会自动分配一个大小为binlog_cache_size的缓存。可通过SHOW GLOBAL STATUS查看binlog_cache_use、binlog_cache_disk_use的状态以判断当前binlog_cache_size是否合适。binlog_cache_use记录了使用缓冲写二进制日志的次数,binlog_cache_disk_use记录了使用临时文件写二进制日志的次数。