通过shell脚本检测MySQL服务信息

作者: admin 分类: 公众号存档            3 次浏览 发布时间: 2018-05-18 00:01

公众号:杨建荣的学习笔记 · 作者:r16笔记25天 · 发布:2018-05-18 00:01:05 · 原文链接

今天改了一版脚本,对于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 “\n”}’ > info_from_sys.lst

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.tmp

done  < mysqllist.lst

}

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=’RHBTEST1d1c5TTEzZGIwSgo=’

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

join -j 1 info_from_sys.tmp info_from_db.tmp

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注