监控MySQL数据库的主从状态的shell脚本

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL数据库的主从状态

本脚本来自有学习阿铭的博文学习:
在大数的互联网公司,其数据库都使用开源的MySQL,其架构也是主从为主,所以监控数据库主从同步情况尤为重要。
提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。

#!/bin/bash
#用途:监控MySQL数据库的主从状态的shell的脚本。
#作者:Caron maktini
#日期:2018年11月19日
#版本:v0.1
#要求如下:每分钟检测一次主从连接状况,未连接则不再执行;不同步情况发生后将向预留邮箱报警;在没有解决情况下,需要每隔30分钟发一次告警邮件。

#把脚本名字存入变量s_name
s_name=`echo $0 | awk -F '/' '{print $NF}'`
Mysql_c="mysql -uroot -p密码"

#该函数实现邮件告警收敛
m_mail(){
    log=$1
    t_s=`date +%s`
    t_s2=`date -d " 1 hours ago" +%s`
    if  [ ! -f /tmp/$log ]
    then
        #创建$log文件
        touch  /tmp/$log
        #增加a权限。只允许追加内容,不允许更改或者删除
        chattr +a /tmp/$log
        #第一次告警,可以直接写入1小时的时间戳
        echo St_s >> /tmp/$log
    fi

#无论$log文件是否刚刚创建,都需要查看最后一行的时间戳
  t_s2=`tail -1 /tmp/$log|awk '{print $1}'`
#取出最后一行即上次告警的时间戳后,立即写入当前的时间戳
  echo St_s>>/tmp/$log
#取两次时间戳差值
  v=S[St_s-$t_s2]
#如果差值超过1800,立即发邮件
if [ $v -gt 1800 ]
  then
      #发邮件,其中$2为mail函数的第二个参数,这里为一个文件
      python mail.py Smail_user S1 "`cat $2`"  2>/dev/null
      #定义计算器临时文件,并写入0
      echo "0" > /tmp/$log.count
  else
     #如果计算器临时文件不存在,需要创建并写入0
     if  [ ! -f /tmp/$log.count ] 
     then
         echo "0" > /tmp/$log.count
     fi
     nu=`cat /tmp/$log.count`
     #30分钟内每发生异常告警,计算器加1    
     nu2= S [ Snu +1 ]
     echo Snu2>/tmp/$log.count 
     #当告警次数到达30次需要发邮件
     if [ $nu2 -gt 30 ]
     then
          python mail.py $mail_user  "$1 30 min " " `cat $2`" 2>/dev/null
          #第二次告警后,将计算器再次从0开始
          echo "0" > /tmp/$log.count
      fi
 fi
}

#把进程情况存入临时文件,如果加管道求行数会有问题
ps aux | grep "$s_name"  | grep -vE  "$$|grep">/tmp/ps.tmp
p_n=`wc -l /tmp/ps.tmp | awk '{print $1}'`

#当进程数大于0,则说明上次的脚本还未执行完

if [ $p_n  -gt 0 ]
 then
      exit
fi

 先执行一条执行show processlist, 看是否执行成功
$Mysql_c -e "show processlist" > /tmp/mysql_pro.log 2>/tmp/mysql_log.err

#如果上一条命令执行不成功,说明这个MySQL服务出了问题。
if [  $? -gt 0 ]
then
      m_mail mysql_service_error /tmp/mysql_log.err
      exit
else
      $Mysql_c -e "show slave status\G" >/tmp/mysql_s.log
      n1=`wc -l /tmp/mysql_s.log|awk '{print $1}'`

     if [ $n1 -gt 0 ]
     then
          y1=`grep 'Slave_IO-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'`
          y2=`grep 'Slave_SQL-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'`
          if [ Sy1 == "NO" ]  ||  [ $y2 == "NO" ]
          then
              m_mail mysql_slavestatus_error /tmp/mysql_s.log
          fi
      fi
 fi
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
28天前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
1月前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之用脚本的方式同步数据到MySQL,怎么指定列作为目标表为唯一行
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
Prometheus 监控 关系型数据库
数据库同步革命:MySQL GTID模式下主从配置的全面解析
数据库同步革命:MySQL GTID模式下主从配置的全面解析
146 0
|
2月前
|
Prometheus 监控 Cloud Native
使用mysqld_exporter监控所有MySQL实例
使用mysqld_exporter监控所有MySQL实例
78 2
|
13天前
|
存储 关系型数据库 MySQL
利用 MySQL 克隆插件搭建主从
MySQL 的 Clone 插件是一个强大的功能,首次引入于 MySQL 8.0.17 版本。简单来说,Clone Plugin 是一款物理克隆数据工具,它能够帮助我们快速、高效地克隆或复制数据库,极大地简化了数据库迁移、备份和恢复的过程,让我们在处理大量数据时更加得心应手。本篇文章我们一起来学习下如何使用克隆插件。
35 2
|
13天前
|
运维 关系型数据库 MySQL
【实操记录】MySQL主从配置
本文使用MySQL原生支持的主从同步机制,详细记录了配置步骤及运维操作方法,可供大家直接参考、使用。 本文假设已经部署了两台主机的MySQL软件,且数据库服务正常,详细部署步骤可本站搜索:"mysql二进制安装包部署"
27 0
|
22天前
|
SQL 关系型数据库 MySQL
【MySQL】主从异步复制配置
【MySQL】主从异步复制配置
19 1
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之数据源同步时,使用脚本模式采集mysql数据到odps中,使用querySql方式采集数据,在脚本中删除了Reader中的column,但是datax还是报错OriginalConfPretreatmentUtil - 您的配置有误。如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
关系型数据库 MySQL 数据安全/隐私保护
windows系统bat批处理 mysql 脚本启动关闭
windows系统bat批处理 mysql 脚本启动关闭
89 3
|
1月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
26 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。