Mysql日志简介之一(Error Log、Slow Query Log、General Query Log)

日志一直都是运维人员处理问题的重要依据,Mysql也不例外,包含了许多类型的日志,下文将具体介绍一下mysql各种日志的作用及相关操作。

基础材料: CentOS7.5  MySQL 5.7.24

mysql包含的日志有:

1.Error Log 错误日志

2.Slow Query Log 慢查询日志

3.General Query Log  查询日志

4.redo log 重做日志

5.undo log 回滚日志

6.binlog 二进制日志

7.Relay log 中继日志


Error Log 错误日志

相关定义 : 记录mysql数据库启动,停止,运行时产生的错误及警告信息的日志

存放路径 : 默认路径为/var/log/mysqld.log

存放内容 : mysql数据库启动,停止,运行时产生的各种错误、警告、通知信息

控制参数:

log_error    该参数定义Error Log的存放路径,全局参数,不可动态修改,默认值为/var/log/mysqld.log,可以通过参数将其修改至其他路径,不过该参数还是建议使用默认值。

log_error_verbosity   该参数定义Error Log记录信息的级别,全局参数,可动态修改,可选值为1(只记录错误信息),2(记录错误和警告信息),3(记录错误、警告、通知信息),其中3是默认值

log_syslog  该参数定义是否将Error Log中的信息发送给syslog,全局参数,可动态修改,默认值OFF。如果开启该参数,log_syslog_facility、log_syslog_include_pid、log_syslog_tag也将生效。在Error Log记录信息的同时,也会将同一信息记录在/var/log/messages下面。

相关问题:

错误日志的输出格式? 

第一项为日志输出时间

第二项为产生日志的session ID,此ID与show processlist列出的ID对应

第三项为日志记录级别

第四项为日志主体信息


Slow Query Log 慢查询日志

相关定义 : 记录执行时间超过阀值的SQL语句,用于诊断问题及调优

存放路径 : 默认路径为数据库初始化路径下的 [hostname]-slow.log

存放内容 : 以文本形式保存执行时间超过阀值的SQL语句、执行该语句的用户、session ID及消耗的时间等信息

控制参数:

slow_query_log  该参数控制是否开启慢查询日志,全局参数,支持动态修改,默认值OFF。

slow_query_log_file 该参数定义慢查询日志的路径及名称,全局参数,支持动态修改,默认值/mysql/data/[hostname]-slow.log,如果动态修改了该参数,会关闭当前日志,然后在指定路径生产新日志。

long_query_time  该参数设置记录慢查询日志的时间阀值,全局及会话级参数,支持动态修改,默认值10秒,支持微秒级别

注:mysql为查询数据加共享锁的时间不计算在内,计算的时间为语句开始执行的时间到锁释放完成的这段时间

min_examined_row_limit 该参数设置记录慢查询行数的阀值,全局及会话级参数,支持动态修改,默认值0条,如果查询的行数低于此值将不被记录到慢查询日志中,即使时间阀值超过long_query_time。

log_slow_admin_statements   默认情况下ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX,
OPTIMIZE TABLE, REPAIR TABLE操作是不记录慢查询日志的,设置log_slow_admin_statements为ON时将记录以上的操作,该参数为全局参数,支持动态修改,默认值OFF。

log_queries_not_using_indexes 默认情况下慢查询日志不记录那些没有走索引的查询,开启该参数将不区分查询是否走了索引,将其全部记录到慢查询日志中,不走索引的查询通常会比较慢(全表扫描),此时慢查询日志可能会增长的非常快。该参数为全局参数,支持动态修改,默认值OFF。

log_throttle_queries_not_using_indexes 全局参数,支持动态修改,默认值是0(即无限制),该参数配合log_queries_not_using_indexes使用,控制在每分钟记录多少条不走索引的慢查询记录以限制文件快速增长。

log_output 全局参数,支持动态修改,默认值是 FILE即将慢查询日志记录在文件中,可选值为FILE,TABLE及FILE,TABLE,如果设置该值为TABLE,则慢查询日志会记录在mysql库的slow_log表中。如果设置为FILE,ABLE则文件及表中都会记录。此参数修改同时影响General Query Log

相关问题:

如何查看慢查询日志?

1.可以使用cat等系统命令直接查看

2.使用mysqldumpslow命令查看

   shell>mysqldumpslow [option] [filename]

Count: 1表示这条语句执行的次数,是一个累加值,比如这条select语句执行了2遍,count值即为2

Time=76.30s (76s)表示这条语句平均执行的耗时,括号中的值表示这条语句多次执行的总计耗时

Lock=0.00s (0s)表示这条语句执行时锁等待的平均时间,括号中的值表示这条语句多次执行的锁等待的总时间

Rows=21831459.0 (21831459)表示扫描过的行数,括号中的值表示这条语句多次执行扫描的总行数

root[root]@localhost表示执行该语句的用户

最后一行是具体执行的sql语句

注:慢查询语句里一条sql真正的执行时间为(Time - Lock),即不计算锁等待的时间


General Query Log  查询日志

相关定义 : 全面记录mysql都做了哪些操作的日志

存放路径 : 默认路径为数据库初始化路径下的 [hostname].log

存放内容 : 以文本形式保存执行mysql执行的操作,包括SQL语句、用户的连接断开操作等。

控制参数:

general_log        该参数控制是否开启查询日志,全局参数,支持动态修改,默热值OFF

general_log_file 该参数定义查询日志的存储路径,全局参数,支持动态修改,默认值/mysql/data/[hostname].log

log_output  全局参数,支持动态修改,默认值是 FILE即将General Query Log日志记录在文件中,可选值为FILE,TABLE及FILE,TABLE,如果设置该值为TABLE,则General Query Log日志会记录在mysql库的slow_log表中。如果设置为FILE,ABLE则文件及表中都会记录。此参数修改同时影响Slow Query Log

相关问题:

如果截断当前General Query Log,生成新log?(慢查询日志也适用)

shell>mv log log.old

shell>mysqladmin flush-logs

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值