超詳細的mysql慢查詢分析神器部署教程--slowquery工具監控慢sql

2019-12-03     波波說運維

概述

前面已經介紹了監控端部署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> 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;

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





到這裡我們就可以通過web頁面來看有哪些慢sql了,但是我們不可能時時去看著這個介面,所以我們還得配置一下告警推送,後面會再介紹下告警方面的配置,感興趣的朋友可以關注下~


文章來源: https://twgreatdaily.com/ejnTyG4BMH2_cNUg7BzT.html