欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql数据同步完整性监控脚本(基本) 博客分类: mysql mysql监控同步shell 

程序员文章站 2024-03-17 12:25:52
...
一个比较坑爹的shell脚本,mysql的主从同步有专门监控脚本,这个在实际情况下基本用不到,不过这是我写的第一个shell脚本,虽然不堪入目,还是纪念一下吧
请各位指正

#!/bin/bash

# Shell script to Monitor MySQL Master server and Slave server working
# When script detects slave mysql server is not working well
# it sends an message.

# This script must be run from Cron Job so that it can monitor mysql server.
# --------------------------------------------------------------------------
# Copyright (C) 2011 yongjun.yin project
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://sfdlut-live-cn.iteye.com/ for more information.
# -------------------------------------------------------------------------

# Master Section
#--------------------------------------------------------------------------
# mysql root/admin username
MUSER="root"
# mysql admin/root password
MPASS="well1410"
# mysql server hostname
MHOST="localhost"
# mysql server dbname
MDB="adn"
#SQL script to query MySQL server
MSCRIPt="../query.sql"
#--------------------------------------------------------------------------

# Slave Section
#--------------------------------------------------------------------------
# mysql root/admin username
SUSER="root"
# mysql admin/root password
SPASS="well1410"
# mysql server hostname
SHOST="localhost"
# mysql server dbname
SDB="adn"
#SQL script to query MySQL server
SSCRIPT="../query.sql"
#--------------------------------------------------------------------------

# start query
sql="use test;select concat('time:',sysdate(),'count=',count(*)) from stu;"

mysql -h $MHOST -u $MUSER -p${MPASS} -e"${sql}" -N >>fileM.out
mysql -h $SHOST -u $SUSER -p${SPASS} -e"${sql}" -N >>fileS.out

#if [ $? -ne 0 ]; then
#echo $result
#fi


i=0
filepath="./fileM.out"
while read LINE
do
        arrM[i]=`echo $LINE | awk -F '=' '{print $2}'`
        #echo  ${arrM[$i]}
        let i++
done<$filepath

i=0
filepath="./fileS.out"
while read LINE
do
        arrS[i]=`echo $LINE | awk -F '=' '{print $2}'`
        let i++
done<$filepath

sum=0
echo ${arrM
  • }
  • echo ${arrS
  • }
  • for((i=0;i<${#arrM
  • };i++));  do
  •         if [ ${arrM[$i]} != ${arrS[$i]} ]; then
                    #echo ${arrM[$i]}
                    #echo ${arrS[$i]}
                    let sum++
            fi
    done

    echo $sum