300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 监控mysql主从复制监控_shell脚本监控mysql主从同步状态

监控mysql主从复制监控_shell脚本监控mysql主从同步状态

时间:2024-02-05 08:25:49

相关推荐

监控mysql主从复制监控_shell脚本监控mysql主从同步状态

mysql做了主从同步之后,偶尔出现过几次主从同步报错或延迟,由于没有任何监控和报警机制,只有在应用程序报错的时候才能发现数据同步出问题了。所以写了个shell脚本用来检测mysql数据库的同步状态

#!/bin/bash

#monitor_mysql_slave status

USERNAME=xx

#如果密码中包含特殊字符,可以加引号,避免转义

PASSWORD='xx'

SLAVE_HOST=ip

SLAVE_PORT=port

MYSQL="mysql -u$USERNAME -p$PASSWORD"

SLAVE="$MYSQL -h $SLAVE_HOST -P $SLAVE_PORT"

EMAIL_ADDR=zhangsan@

datetime=`date +"%Y-%m-%d %H:%M:%S"`

#查看从服务器状态

MySQL_Status=`$SLAVE -e "SHOW SLAVE STATUS\G" | grep -E "Running|Seconds_Behind_Master"|head -n3 `

#从服务器的二个进程信息

Slave_IO_Running=`echo $MySQL_Status | grep Slave_IO_Running |awk '{print $2}'`

Slave_SQL_Running=`echo $MySQL_Status |grep Slave_SQL_Running |awk '{print $4}'`

Seconds_Behind_Master=`echo $MySQL_Status |grep Seconds_Behind_Master |awk '{print $6}'`

if [ "$Slave_IO_Running" = "Yes" -a "$Slave_SQL_Running" = "Yes" -a "$Seconds_Behind_Master" -lt "10"]

then

echo "Replication OK"

else

SUBJECT="ERRORS in replication"

BODY="$datetime $SLAVE_HOST MySQL slave replication error"

echo $SUBJECT

echo $BODY

#发送报警邮件

echo $BODY | mail -s "$SUBJECT" -t $EMAIL_ADDR

fi

编写好了之后,保存。授予可执行权限 chmod +x 文件名 ,然后执行即可。如果有错误,可使用sh -x 文件名 进行调试。

也可将该脚本加入到定时任务中,定时执行

使用crontab -e 命令,将下方的命令加入到定时任务中

定时任务每15分钟执行一次

*/15 * * * * /usr/local/xx.sh

重启crontab

这是个简单的检测MySQL同步状态的脚本,而且单纯的依靠 Slave_IO_Running和Slave_SQL_Running,Seconds_Behind_Master的值来判断主从同步是否延迟是不准确的。推荐使用专门的工具进行监控,比如percona-toolkit 等

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。