• Shell编程—企业生产案例


    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、也可以通过以上方法综合利用

  • 相关阅读:
    P1603 斯诺登的密码
    C++ 文件操作
    Hibernate Dialect must be explicitly set
    Dijkstra算法详解
    Php 使用 fsockopen发送http请求
    再探java基础——break和continue的用法
    Android源码的下载和编译
    ALV列、行、单元格颜色设置
    数学之路(3)-机器学习(3)-机器学习算法-欧氏距离(2)
    [poj 2926]Requirements[最远曼哈顿距离]
  • 原文地址:https://www.cnblogs.com/guarderming/p/9466355.html
Copyright © 2020-2023  润新知