mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)

概述

前面已经介绍了监控端部署slowquery工具部分,今天主要介绍被监控端的部署方面内容。


一、脚本定时推送慢查询日志

1、脚本内容

进入到slowquery/client_agent_script目录下,把slowquery_analysis.sh脚本拷贝到生产mysql主库上做慢日志分析推送,脚本如下:

#!/bin/bash #改成你的运维管理机MySQL地址(用户权限最好是管理员) slowquery_db_host="xx.xx.xx.94" slowquery_db_port="3306" slowquery_db_user="slowquery" slowquery_db_password="xxxx" slowquery_db_database="slowquery" #改成你的生产MySQL主库地址(用户权限最好是管理员) mysql_client="/usr/local/mysql/bin/mysql" mysql_host="xx.xx.xx.69" mysql_port="3306" mysql_user="slowquery" mysql_password="xxxx" #改成你的生产MySQL主库慢查询目录和慢查询执行时间(单位秒) slowquery_dir="/data/log/" slowquery_long_time=2 slowquery_file=`mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'` pt_query_digest="pt-query-digest" #改成你的生产MySQL主库server_id mysql_server_id=1 #collect mysql slowquery log into slowquery database $pt_query_digest --user=$slowquery_db_user --password=$slowquery_db_password --port=$slowquery_db_port --review h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review --hist ory h=$slowquery_db_host,D=$slowquery_db_database,t=mysql_slow_query_review_history --no-report --limit=100% --filter=" \$event->{add_column} = length(\$event->{arg}) and \$event->{serverid}=$mysql_server_id " $slowquery_file > /tmp/slowquery_analysis.log ##### set a new slow query log ########### tmp_log=`mysql -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'` #config mysql slowquery mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log=1;set global long_query_time=$slowquery_long_time;" mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global slow_query_log_file = '$tmp_log'; " #delete log before 7 days cd $slowquery_dir find ./ -name 'slowquery_*' -mtime 7|xargs rm -f ; ####END####

ps:常见报错:

Pipeline process 5 (iteration) caused an error: DBD::mysql::st execute failed: Data truncated for column 'checksum' at row 1 [for Statement " INSERT INTO `slowquery`.`mysql_slow_query_review` Terminating pipeline because process 4 (iteration) caused too many errors.

mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)(1)

解决:

mysql> alter table mysql_slow_query_review modify checksum varchar(100) not null ; mysql> alter table mysql_slow_query_review_history modify checksum varchar(100) not null; mysql> alter table mysql_slow_query_review_history modify serverid_max smallint(4) null;

mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)(2)

2、设置定时任务(10分钟一次)

*/10 * * * * /bin/bash /home/scripts/slowquery_analysis.sh > /dev/null 2>&1


二、访问慢查询界面

1、启动httpd

systemct restart httpd

2、访问

地址:http://服务器IP/slowquery/slowquery.php


mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)(3)


mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)(4)



到这里我们就可以通过web页面来看有哪些慢sql了,但是我们不可能时时去看着这个界面,所以我们还得配置一下告警推送,后面会再介绍下告警方面的配置,感兴趣的朋友可以关注下~


mysql慢查询性能优化(详解mysql慢查询分析神器部署教程)(5)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页