通過shell指令碼檢測MySQL服務資訊

jeanron100發表於2018-05-22
通過shell指令碼檢測MySQL服務資訊

今天改了一版指令碼,對於MySQL的基本資訊的獲取有了一個相對比較清晰的收集方式。

我簡單解釋下指令碼。

整體是分為兩部分

第一部分是通過系統層面來解析MySQL的基本資訊,方式是通過ps -ef|grep mysql得到的資訊來解析。

第二部分是通過登入MySQL得到的資訊,基本資訊包括server_id,log_bin等。

指令碼內容如下:

ps -ef|grep mysql |grep -w mysqld|grep -v grep |awk -F`–` `{for (i=2;i<=NF;i++) {printf $i” “}printf ” “}` > info_from_sys.tmp

function get_info_from_sys()

{

while read line

do

array=$line

port_str=`port=`

socket_str=`socket=`

for arr_tmp in ${array[*]}; do

if [[ $arr_tmp =~ $port_str ]];then

port_tmp=`echo $arr_tmp|sed `s/port=//g“

fi

if [[ $arr_tmp =~ $socket_str ]];then

socket_tmp=`echo $arr_tmp|sed `s/socket=//g“

fi

done

if [ -z “$port_tmp” ];then

port_tmp=3306

fi

echo $port_tmp $socket_tmp >> info_from_sys.lst

done < info_from_sys.tmp

}

function get_info_from_db()

{

while read line

do

port=`echo $line|awk `{print $1}“

#echo $port

/usr/local/mysql/bin/mysql -udba_admin -p$dec_passwd -h127.0.0.1 -P${port} -N -e “select @@port,@@log_bin,@@innodb_buffer_pool_size,@@gtid_mode,@@datadir,@@character_set_server,@@server_id,version();” >> info_from_db.lst

# echo $port_tmp $socket_tmp

done < info_from_sys.lst

}

function decrypt_passwd

{

tmp_passwd=$1

dec_passwd=`echo $tmp_passwd|base64 -d`

}

##MAIN

get_info_from_sys

sec_password=`RHB6TEST1d1c5TTEzZGIwSgo=` –這個是資料庫密碼的base64加密串,可以根據需求來定製

dec_passwd=“

decrypt_passwd $sec_password

get_info_from_db

sort info_from_db.lst > info_from_db.tmp

sort info_from_sys.lst > info_from_sys.tmp

rm info_from_db.lst info_from_sys.lst

join -j 1 info_from_sys.tmp info_from_db.tmp

最後送波福利。現在加群即可獲取Java工程化、高效能及分散式、高效能、高架構。效能調優、Spring,MyBatis,Netty原始碼分析和大資料等多個知識點高階進階乾貨的直播免費學習許可權及領取相關資料,群號:835638062 點選連結加入群聊【Java高階架構】:https://jq.qq.com/?_wv=1027&k=5S3kL3v


相關文章