今天改了一版腳本,對(duì)于MySQL的基本信息的獲取有了一個(gè)相對(duì)比較清晰的收集方式。
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、主機(jī)域名、虛擬空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。我簡(jiǎn)單解釋下腳本。
整體是分為兩部分
第一部分是通過系統(tǒng)層面來解析MySQL的基本信息,方式是通過ps -ef|grep mysql得到的信息來解析。
第二部分是通過登錄MySQL得到的信息,基本信息包括server_id,log_bin等。
腳本內(nèi)容如下:
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 -h227.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=' --這個(gè)是數(shù)據(jù)庫密碼的base64加密串,可以根據(jù)需求來定制
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