• 检查MySQL主从复制运行状态


    脚本思路:

    1、使用MySQL客户端命令"mysql"直接在命令行中运行MySQL指令"show slave statusG;"来查看MySQL主从复制状态信息。
    2、通过状态信息中的一些重要字段来判断当前主机的主从复制状态是否健康。
    3、若不健康则一般是由于Slave上SQL执行过程中出现异常,则将异常的SQL信息打印到屏幕上。

    脚本内容:

    #!/bin/bash
    # @author:rby
    # @title:检查MySQL主从健康情况
    
    #
    # 基本配置
    #
    MYSQL_USER="root"
    MYSQL_PASSWORD="xxx"
    MYSQL_HOST="localhost"
    MYSQL_PORT=3306
    
    # 
    # 检查MySQL主从健康情况
    #
    
    show_slave_status=`mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -A -e 'show slave statusG;' 2>/dev/null`
    slave_sql_running_state=`echo "$show_slave_status" |grep Slave_SQL_Running_State |awk -F ': ' '{print $2}'`  # Slave上SQL运行状态
    ms_status=`echo "$show_slave_status" |grep Running: |awk -F ': ' '{if($2=="Yes"){sum += 1}}; END{print sum}'`  # IO、SQL线程运行状态:2表示健康,!2表示不健康
    
    # 如果主从复制状态是不健康的则在屏幕上打印Slave主机SQL运行状态
    if [ $ms_status -eq 2 ];then
      echo "ms running status: 1"
    else
      echo "ms running status: 0"
      echo "error: $slave_sql_running_state"
    fi
    

    脚本解析:

    使用grep命令基于关键字过滤获取关键行
    使用awk命令进行判断和筛选字段
    使用Shell脚本中的if语句进行判断,并打印相关信息到屏幕上

    脚本好处:

    在本脚本中,使用变量"$show_slave_status"来存储"mysql -uxxx -pxxx -e'show slave statusG;'"命令执行的结果,以供后续的脚本指令语句对结果进行处理,其实际命令只运行了一次,就可以多处引用,同时也提高了脚本工作的效率。

    乐在分享!~~
  • 相关阅读:
    tornado源码分析-多进程
    create a cocos2d-x-3.0 project in Xcode
    记录自己的傻逼的错误:找不到或无法载入主类
    MVC5 Entity Framework学习之实现主要的CRUD功能
    Linux中实现多网卡绑定总结
    it码农之心灵鸡汤(一)
    【高级算法】遗传算法解决3SAT问题(C++实现)
    MySQL-分区表-1
    OpenSift源代码编译过程记录
    Android Studio 视图解析
  • 原文地址:https://www.cnblogs.com/network-ren/p/15100129.html
Copyright © 2020-2023  润新知