登录
首页 >  数据库 >  MySQL

Shell脚本监控Mysql主从同步状态+钉钉提醒

来源:SegmentFault

时间:2023-01-27 16:11:16 414浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《Shell脚本监控Mysql主从同步状态+钉钉提醒》,就很适合你!文章讲解的知识点主要包括MySQL,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

脚本编写

vim mysql_status.sh

#!/bin/bash

DING_TOKEN='https://oapi.dingtalk.com/robot/send?access_token=xxx'
MYSQL_PORT=3306
MYSQL_VIP1=192.168.1.111
MYSQL_VIP2=192.168.1.112
MYSQL_USERNAME=root
MYSQL_PASSWORD=root
GET_MYSQL_PORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
CHECK_MYSQL=`mysql -u$MYSQL_USERNAME -p$MYSQL_PASSWORD -h $MYSQL_VIP1 --connect_timeout=5 -e "show databases;"`
STATUS=$(mysql -u$MYSQL_USERNAME -p$MYSQL_PASSWORD -h $MYSQL_VIP1 -e "show slave status\G" | grep -i "running")
IO_env=`echo $STATUS | grep IO | awk ' {print $2}'`
SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'`

function checkMysqlStatus(){
  if [ "$GET_MYSQL_PORT" == "3306" ]
  then
    if [ "$CHECK_MYSQL" -ne 0 ]
    then
      dingAlert "Server: $1 mysql is down, please try to restart mysql by manual!"
    else
      echo "Server: $1 mysql is running..."
    fi
  else
    dingAlert "WARN!Server: $1 mysql is down."
  fi

  if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
  then
    echo "Server: $1 MySQL Slave is running!"
  else
    dingAlert "Server: $1 MySQL Slave is not running!"
  fi
}

function dingAlert(){
  curl $DING_TOKEN \
    -H 'Content-Type: application/json' \
    -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"数据库监控测试\n$1\"}}"
}

checkMysqlStatus $MYSQL_VIP1

脚本调用

chmod +x mysql_status.sh

./mysql_status.sh

参考资料

mysql主从监控shell

以上就是《Shell脚本监控Mysql主从同步状态+钉钉提醒》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表