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的主要内容,如果未能解决你的问题,请参考以下文章