MySQL数据库监控软件lepus使用问题以及解决办法(2)

Pipeline process 5 (iteration) caused an error: DBD::mysql::st execute failed: Data truncated for column 'checksum' at row 1 [for Statement "REPLACE INTO `lepus`.`mysql_slow_query_review_history`(`checksum`, `sample`, `serverid_max`, `db_max`, `user_max`, `ts_min`,

.....

Terminating pipeline because process 4 (iteration) caused too many errors.

修改mysql_slow_query_review:

mysql> alter table mysql_slow_query_review modify checksum varchar(100) not null ;

Query OK, 0 rows affected (0.03 sec)

Records: 0  Duplicates: 0  Warnings: 0


修改mysql_slow_query_review_history:

mysql> alter table mysql_slow_query_review_history modify checksum varchar(100) not null;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0


mysql> alter table mysql_slow_query_review_history modify serverid_max smallint(4) null;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

修改脚本:

原始的lepus_slowquery.sh文件存在一些问题。

(1) 需要人工指定lepus_server_id。这个脚本需要在每个MySQL服务器上部署,因此如果要监控的MySQL很多,会比较容易出错。

lepus_server_id这个参数很重要。下面的代码可以自动取得这个id。

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}')


(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 :

#################################################################

#!/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"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6a7201baa9c057a561eba38d81b83f01.html