$mysql_host' and port=$mysql_port\G" 2>/dev/null |grep "id:" |awk -F": " '{print $2}')
(2)同一台机器上如果部署有多个MySQL服务实例时,应该只需要一个定时任务即可,在另一脚本中同时对本机的多个MySQL服务实例进行检查。
这个总的定时脚本如下,测试时开启了6个MySQL实例,端口依次为:3306 3307 3308 3406 3407 3408.其中3306和3406为MASTER,其它为SLAVE。在这个总的脚本中对每个实例调用lepus_slowquery.sh。
[linuxidc@linuxidc mysql]$ cat slowquery.sh
##################################################################
# FileName :slowquery.sh
# Author : coe2coe@qq.com
# Created :2018-09-27
# Description :http://www.cnblogs.com/coe2coe/
#################################################################
#!/bin/bash
ports=(3306 3307 3308 3406 3407 3408)
i=0
while [ $i -lt ${#ports[*]} ]
do
port=${ports[$i]}
echo -e "/lepus_slowquery.sh $port"
./lepus_slowquery.sh $port
let i=i+1
done
(3)原始的lepus_slowquery.sh会去修改MySQL的全局配置参数,个人认为不需要修改,这两个配置还是应该按照MySQL服务器的my.cnf文件中配置的为准,不应该因为部署了一个lepus监控系统就随意的修改这个参数。因此直接注释掉了最后面的几行代码。
long_query_time
slow_query_log_file
修改后的完整的lepus_slowquery.sh文件如下:
[linuxidc@linuxidc mysql]$ cat lepus_slowquery.sh
#!/bin/bash
#****************************************************************#
# ScriptName: /usr/local/sbin/lepus_slowquery.sh
# Create Date: 2014-03-25 10:01
# Modify Date: 2014-03-25 10:01
#***************************************************************#
port=$1
id=$2
if [ "$port" == "" ] || [ $port -lt 1 ]
then
echo -e "invalid argument port"
exit 1
fi
echo -e "mysql port is :{$port} "
#config lepus database server
lepus_db_host="11.1.1.11"
lepus_db_port=3306
lepus_db_user="lepus_monitor"
lepus_db_password="XXXXXXXXXX"
lepus_db_database="lepus"
#config mysql server
mysql_client="/usr/bin/mysql"
mysql_host="11.1.1.11"
mysql_port=$port
mysql_user="lepus_monitor"
mysql_password="XXXXXXXXXX"
id=$( $mysql_client -h$lepus_db_host -P$lepus_db_port -u$lepus_db_user -p$lepus_db_password -e "select id,host,port from $lepus_db_database.db_servers_mysql where host='$mysql_host' and port=$mysql_port\G" 2>/dev/null |grep "id:" |awk -F": " '{print $2}')
if [ "$id" == "" ] || [ $id -lt 1 ]
then
echo -e "invalid argument id"
exit 2
fi
echo -e "mysql lepus id is :{$id}"
#config slowqury
slowquery_dir="/tmp/"
slowquery_long_time=1
slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "show variables like 'slow_query_log_file'" 2>/dev/null |grep log|awk '{print $2}'`
pt_query_digest="/usr/bin/pt-query-digest"
#config server_id
lepus_server_id=$id
#collect mysql slowquery log into lepus database
$pt_query_digest --user=$lepus_db_user --password=$lepus_db_password --port=$lepus_db_port --review h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review --history h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review_history --no-report --limit=100% --filter=" \$event->{add_column} = length(\$event->{