mysql 第三十六篇文章~mysql慢日志方案解读1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 第三十六篇文章~mysql慢日志方案解读1相关的知识,希望对你有一定的参考价值。

一 慢日志的相关参数
   long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为1s
   log_slow_queries :1/0 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)
   slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件

二 慢日志的处理方案
 1 将每天的慢日志进行切割,然后用pt-query-digest 插入到远程数据库进行存储
 2 切割好的慢日志保留三十天,其他的进行清空处理
 3 慢日志以邮件的形式进行每日发送
 4 有特殊需求时用pt-query-digest在数据库端进行手动过滤
三 慢日志的切割方案
  1 配合天兔的脚本,按照小时进行切割
     脚本核心原理
     tmp_log=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "select concat(‘$slowquery_dir‘,‘slowquery_‘,date_format(now(),‘%Y%m%d%H‘),‘.log‘);"|grep log|sed -n -e ‘2p‘`
     set global slow_query_log=1 set global long_query_time=1 set global slow_query_log_file = ‘$tmp_log‘;
     从这段代码中我们可以看出来,是根据重新设置slow_log的方式进行切割的,然后利用pt-query-digest先读取然后再生产新的slow_log,推荐此种方式
     脚本在网上一搜就有了
  2 logrotate 方式进行切割
    /data/log/mysql/slowlog/mysql-slow.log {
   daily 按照日期切割
   rotate 30 保留30天
   missingok #如果日志文件不存在,继续处理下一个文件而不产生报错信息
  delaycompress #推迟要压缩的文件,直到下一轮询周期再执行压缩
  copytruncate #见下面注解
  postrotate
  pt-query-digest --user=anemometer --password=anemometer --review h=node17,D=slow_query_log,t=global_query_review --history h=node17,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=" \$event->{Bytes} = length(\$event->{arg})   and \$event->{hostname}=\"$HOSTNAME\"" /data/log/mysql/slowlog/mysql-slow.log-`date +%Y%m%d`
 #/usr/local/mysql/bin/mysql -e "flush slow logs;"
 endscript
 }
 在切割前进行远程插入,感觉配置比较复杂,有熟悉此工具的同学可以采用此种方式
 四 相关的一些注意事项
 1 自带
 2 天兔
 3 Anemometer
 4 C/S架构下的自定义收集模式
 1 脚本收集
  共同点 pt-query-digest
  不同点 过滤fliter规则和history表字段不一样
 2 对于hostname的处理
   1 自带的是无法解决这个问题,缺少相应字段
   2 天兔 添加server_Id
   --filter=" \$event->{add_column} = length(\$event->{arg}) and \$event->{serverid}=$lepus_server_id "
  3 Anemometer 添加hostname
   --filter=" \$event->{Bytes} = length(\$event->{arg}) and \$event->{hostname}=\‘$HOSTNAME\‘ "
  4 pt-query-diget两种表的区别
   -history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
  --review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。
五 总结
 核心工具 pt-query-digest 过滤规则,相关表设计 前端展示

 

















































以上是关于mysql 第三十六篇文章~mysql慢日志方案解读1的主要内容,如果未能解决你的问题,请参考以下文章

MySQL实战第三十六讲- 为什么临时表可以重名?

mysql 第三十二篇文章~并发导致的从库延迟问题

第三十六章 MYSQL语句一

2018-08-22 第三十五课

mysql 第三十四篇文章~mysql5.7的安装

第三十六篇 hashlib模块hmac模块和logging模块