查看原文
其他

Linux系统Shell编程—企业生产案例(一)

2017-01-18

作者 民工哥


企业案例

Linux系统Shell编程—企业生产案例(一)


企业数据库可以说是重点保护对象啊,没有之一,数据在当今企业里就是生命线,因此今天就来说一说,如何通过shell脚本来检查或监控MYSQL数据库服务是否正常??

01

通过端口判断

[root@mysql ~]# vi checkmysql.sh

#!/bin/sh

#create by mingongge at 2016-11-11

port=`netstat -lnt|grep 3306|wc -l`

if [ $port -ne 1 ];then

   echo "mysql is stop"

   /etc/init.d/mysqld start

else

   echo "mysql is starting"

fi

[root@mysql ~]# sh checkmysql.sh

mysql is starting

[root@mysql ~]# pkill mysqld

[root@mysql ~]# lsof -i :3306

[root@mysql ~]# sh checkmysql.sh

mysql is stop

Starting MySQL.                                 [  OK  ]

[root@mysql ~]# lsof -i :3306  

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  1601 mysql   10u  IPv4  13690      0t0  TCP *:mysql (LISTEN)

02

通过进程与端口判断

[root@mysql ~]# ps -ef|grep mysql|grep -v grep|wc -l

2

[root@mysql ~]# vi checkmysql.sh

#!/bin/sh

#create by mingongge at 2016-11-11

if [[ $port -eq 1 || $porcess -eq 2 ]];then

     echo "mysql is starting"

else

     echo "mysql is stop"

     /etc/init.d/mysqld start

注:利用进程判断时,脚本的名称就不要包含有Mysql的字样了,否则就会产生判断不准确的情况出现

03

登陆数据库根据返回值判断

[root@mysql ~]# vi accessmysql.sh

#/bin/sh

mysql -uroot -pmysql123 -e "show databases;" >/dev/null 2>&1

注:此处千万不要用直接登陆的写法mysql -uroot -pmysql123,否则会直接登陆了,不然执行下面的过程了

if [ $? -eq 0 ];then

     echo "mysql is starting"

else

     echo "mysql is stop"

     /etc/init.d/mysqld start

fi

[root@mysql ~]# sh accessmysql.sh

mysql is starting

[root@mysql ~]# pkill mysqld

[root@mysql ~]# sh accessmysql.sh

mysql is stop

Starting MySQL.                    [  OK  ]

[root@mysql ~]# sh accessmysql.sh

mysql is starting

监控MYSQL数据库是否异常的多种方法:

1、根据端口监控本地数据库

2、根据进程进行监控本地数据库

3、通过客户端命令及账号连接MYSQL,然后根据返回内容进行判断是否正常

4、通过PHP、JAVA程序URL方式进行监控(此种方式最佳,生产环境常用)

5、也可以通过以上方法综合利用

长按关注公众号






    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存