MySQL主从状态检查sheel脚本

以下脚本可以在任意有mysql客户端的机器执行;检查配置的丛机ip相关的主从同步状态,并将结果返回;返回0为正常;1为异常。可结合邮件报警脚本使用。
脚本参考了其他网络资源,侵删。

#!/bin/bash
#mysql链接端口
PORT='3306'
#mysql用户名
USER='root'
#mysql密码
PASSWORD_MYSQL='Bocom_123'
#丛机ip地址
SLAVE_IP=127.0.0.1
#定义一个绿色输出的函数
function echo_green {
        echo -e "\033[32m$1\033[0m"
}
#以上为需要修改的配置信息
DATE=`date +%Y-%m-%d-%H-%M-%S`

echo_green $DATE
#判断是否为root用户
user=$(whoami)
echo $user
if [ "$user" != "root" ];then
   echo_green "不是root用户,请切换到root用户执行!"
   exit
fi
 
HOST_IP=$SLAVE_IP
	RESULT=1;
	check_master_slave_relation(){
		#读Slave_IO_Running是否为yes
		vIO=$(mysql --host=$HOST_IP --port=$PORT --user=$USER --password=$PASSWORD_MYSQL --connect-expired-password -e "show slave status\G"| awk '/Slave_IO_Running/' | awk -F ":" '{print $2}')
	#	echo "vIO=$vIO----"
		
		#读Slave_SQL_Running是否为yes
		vSQL=$(mysql --host=$HOST_IP --port=$PORT --user=$USER --password=$PASSWORD_MYSQL --connect-expired-password -e "show slave status\G"| awk '/Slave_SQL_Running:/' | awk -F ":" '{print $2}')
	#	echo "vSQL=$vSQL----"
		
		#读取主从延迟值
		vdelay=$(mysql --host=$HOST_IP --port=$PORT --user=$USER --password=$PASSWORD_MYSQL --connect-expired-password -e "show slave status\G"| awk '/Seconds_Behind_Master/' | awk -F ":" '{print $2}')
	#    echo "vdelay=$vdelay---"
		
		if [ $vIO = "" ];
		then
			echo_green "the username or password is wrong,or the mysql server is down,so we can not get value" 
		#表示主从同步错误
		return 	1	
		else 
			 #此处不能有空格
			if [ $vIO = 'Yes' ];
			then
			   #此处必须有空格
				if [ "$vSQL" = ' Yes' ];
				then
					#判断sql进程是否出现延迟
					echo_green "同步时延:$vdelay 秒"
					if [ $vdelay != 0  ];
					then
					
						if [ $vdelay -ge 60 ];
						then
							content3="${HOST_IP}: the status of io process and sql process is yes,but slave delayed $vdelay seconds,more than 1 minutes"
							echo_green "$content3"
							#表示主从同步错误
							return 1
						else
							echo_green "${HOST_IP} the status of io process and sql process is yes,but slave delayed $vdelay seconds,less than 1 minutes"
							#表示主从同步正常
							return 0
						fi
					else
						echo_green "There is no problem"
						#主从同步关系正常
						return 0
					fi
				else
					content2=$HOST_IP" Slave_IO_Running status:$vIO,Slave_SQL_Running status:$vSQL,please deal with it as soon as possible!"
					#主从同步关系错误
					return 1
					echo_green "$content2"
				fi
			else
			   content1=$HOST_IP" Slave_IO_Running status:$vIO,Slave_SQL_Running status:$vSQL,please deal with it as soon as possible!"  
			   echo_green $content1
			   #主从同步关系错误
			   return 1
			   
			fi
		fi
	}
	#第一个参数为对应MASTER的IP地址

	check_master_slave_relation
	RELATION_CHECK_RESULT=$?
	MASTER_HOST=$(mysql --host=$HOST_IP --port=$PORT --user=$USER --password=$PASSWORD_MYSQL --connect-expired-password -e "show slave status\G"| awk '/Master_Host:/' | awk -F ":" '{print $2}')
	 
    echo_green "检查主从关系失败,请手动修复主从后重试"	
	#返回检查结果给调用者
	return $RELATION_CHECK_RESULT	
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值