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