zoukankan      html  css  js  c++  java
  • 合格linux运维人员必会的30道shell编程实践题及讲解-01

    企业实践题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
    阶段1:开发一个守护进程脚本每30秒实现检测一次。
    阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
    阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)

    我的脚本===================

    [root@master day4]# cat mysql_slave.sh 
    
    #!/bin/bash
    [ -f /etc/init.d/functions ] && . /etc/init.d/functions
    
    [ $UID -ne 0 ] &&{
    
    echo "only allow root to exec this cmd."
    exit
    }
    
    USER=root
    PASSWORD=123456
    PORT=3307
    error=(1158 1159 1008 1007 1062)
    MYSQLCMD="mysql -u$USER -p$PASSWORD -P$PORT"
    
    is_run(){
    [ `lsof -i:$PORT|wc -l` -lt 2 ]&&{
    echo "mysql server is stopped."
    exit 1
    }
    }
    
    status_array(){
    status=($($MYSQLCMD -e "show slave statusG"|egrep "_Running|Last_Errno|Behind_Master"|awk '{print $NF}'))
    }
    
    status_error(){
    for((i=0;i<${#error[*]};i++))
    do
        if [ "$1" == "${error[$i]}" ]
        then
            $MYSQLCMD -e "stop slave;set global sql_slave_skip_counter=1;start slave;"
        else
            echo "Mysql slave is failed,errorno is $1"
        fi
    done
    }
    
    judge_salve(){
    status_array
    if [ "${status[0]}" == "Yes" -a "${status[1]}" == "Yes" -a "${status[3]}" == "0" ];then
        echo "Mysql slave is ok"
    else
        status_error ${status[2]}
    fi
    }
    
    main(){
    while true
    do
        is_run
        judge_slave
        sleep 30
    done
    }
    main
     
     
  • 相关阅读:
    键盘过滤驱动
    多线程和多进程的差别(小结)
    Android UI设计规则
    怎样使用SetTimer MFC 够具体
    Chord算法(原理)
    POJ 1384 Piggy-Bank 背包DP
    Bulk Insert命令具体
    hibernate官方新手教程 (转载)
    教你用笔记本破解无线路由器password
    转换流--OutputStreamWriter类与InputStreamReader类
  • 原文地址:https://www.cnblogs.com/oliver-blogs/p/7715648.html
Copyright © 2011-2022 走看看