MySQL日志

MySQL日志

日志类别

MySQL中的日志文件是很重要的一部分内容,其记录了影响MySQL数据库的各种类型活动,可以帮助我们对MySQL数据库的运行状态进行诊断,常见的日志文件有四种:

  • 错误日志(error log)
  • 慢查询日志(slow query log)
  • 查询日志(log)
  • 二进制日志(binlong)

错误日志

简介

错误日志文件对MySQL的启动、运行、关闭过程进行了记录。不仅记录了所有的错误信息,也记录了一些警告信息或正确的信息。

我们可以通过下面的命令来定位该文件:

# 查看错误日志文件位置
SHOW VARIABLES LIKE 'log_error'\G;

默认情况下错误文件的文件名为服务器的主机名。

日志路径配置

当然错误日志文件的路径也可以通以下三种方式进行配置:

  • MySQL启动时指定
  • 设置全局变量
  • 修改配置文件

具体可以参照下面博客:

MySQL错误日志总结

慢查询日志

简介

慢查询日志可以帮助定位可能存在问题的SQL语句,从而进行SQL语句层面的优化,其中有几个重要的参数:

  • long_query_time(超过该值的所有SQL语句都会被记录到慢查询日志文件中,注意等于该值不会被记录)
  • slow_query_log(控制慢查询日志的开关,默认关闭)
  • log_queries_not_using_indexes(将没有使用索引的语句记录到慢查询日志中)
  • log_throttle_queries_not_using_indexes(每分钟允许记录到slow log的且未使用索引的SQL语句次数)
  • log_output(指定了慢查询输出的格式,默认为FILE)
  • slow_query_log_file(慢查询日志文件的位置)

参数的查询语句如下:

SHOW VARIABLES LIKE 'slow_query_log'\G;

日志查看

文件形式查看

如果越来越多的SQL查询被记录到了慢查询日志文件中,分析该文件可能就不会显得简单直观了,此时我们可以使用MySQL提供的mysqldumpslow命令:

# MySQL分析慢查询日志工具
mysqldumpslow mike-slow.log;
表形式查看

MySQL同样也支持将慢查询的日志记录放入到一张表里,但是需要将log_output输出格式设置为TABLE。

# 更改输出格式
SET GLOBAL log_output='TABLE';
# 查询表的方式查询
SELECT * FROM mysql.slow_log\G;

slow_log表默认使用的是CSV引擎,为了提升大数据量下的查询效率,我们可以人为地将引擎转换到MyISAM,并在start_time列上添加索引,需要注意的是该操作需要先关闭慢查询:

# 关闭慢查询
SET GLOBAL slow_query_log=off;
# 更改表引擎
ALTER TABLE mysql.slow_log ENGINE=MyISAM;

查询日志

简介

查询日志记录了所有对MySQL数据库请求的信息,无论这些请求是否得到了正确的执行。同样地,查询日志也支持表的方式查看,由上述讲到的log_output参数控制,该表的使用方式和慢日志基本一样。

# 查询日志相关的参数
SHOW VARIABLES LIKE 'general_log%';
# 查询日志文件是否开启
SHOW VARIABLES LIKE 'general_log'\G;
# 查询日志文件的位置
SHOW VARIABLES LIKE 'general_log_file'\G;
# 查询表的方式查询
SELECT * FROM mysql.general_log;

二进制日志

简介

二进制日志记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。

# 查看二进制日志相关的参数
SHOW VARIABLES LIKE '%log_bin%';
# 查询二进制日志是否开启
SHOW VARIABLES LIKE 'log_bin';
# 查询binlog文件路径
SHOW VARIABLES LIKE 'datadir';
# 查询binlog文件名
SHOW MASTER STATUS;
# 查询binlog
SHOW BINLOG EVENTS IN 'log_file'\G;

二进制日志主要有以下几种作用:

  • 恢复:某些数据的恢复需要二进制文件
  • 复制:通过复制和执行二进制文件使一台远程主机的MySQL数据库与一台MySQL数据库进行实时同步
  • 审计:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的供给

二进制文件的主要参数:

  • max_binlog_size:单个二进制文件的最大值,如果超过该值,则产生新的二进制日志文件,后缀名+1,并记录到.index文件
  • binlog_cache_size:所有未提交的二进制日志都会被记录到缓存中,若缓存过小则会生成临时文件存储,此参数可以控制缓存区大小
  • binlog_cache_use:记录了使用缓存区写二进制日志的次数
  • binlog_cache_disk_use:记录了使用临时文件写二进制日志的次数
  • sync_binlog:控制二进制日志同步到磁盘的时机
  • binlog_do_db:控制需要写入哪些库的日志
  • binlog_ignore_db:控制忽略写入哪些库的日志
  • log_slave_update:控制是否将从master取得并执行的二进制日志写入自己的二进制日志文件中
  • binlog_format:控制二进制日志的格式

日志查看

如果需要查看二进制文件的内容,必须通过MySQL提供的工具mysqlbinlog

# -vv可显示更多执行信息
mysqlbinlog --vv --start-position=200 test.00004

参考资料

MySQL错误日志总结

《MySQL技术内幕》:3.2日志文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值