shell检查Mysql主从备份状态
一般检查状态,只是show slave status\G;查看是否两个Yes,但是,这样其实也不完全正确,我加上了对比了两个表的数据,如果都满足才正常,其中有一项不满足,则发邮件通知.################
本脚本有很多个小脚本组成,下面依次介绍
一共有以下几个脚本
all.sh for-master.sh for-slave.sh master.sh slave.sh
##########################################
1.:导出库内的所有的表格名字,并且记录到一个文件下,注意:我们要对比的是两台server之间的数据,所有,要编写两个同样功能的脚本.
####
vim master.sh
#!/bin/bash
usr="xxx"
passwd="xxx"
ip="xxx"
mysql -u $usr -p$passwd -h$ipa.txt
./for-slave.sh > b.txt
Mnum=`cat a.txt | wc -l`
for((i=1;i /dev/null
else
echo "mysql database table does not have sync, please check ...." > error.txt
mail -s "mysql master/slave" xxx@xxx.com > error.txt
fi
done
#################对slave主机的show slave status\G的状态进行监控
#mysql -u root -pxxxstatus.txt
IO=$(cat status.txt | grep Slave_IO_Running | awk '{print $2}')
SQL=$(cat status.txt | grep Slave_SQL_Running | awk '{print $2}')
if [ "$IO" = "Yes" ] && [ "$SQL" = "Yes" ]
then
echo "..............." &> /dev/null
else
echo "down ............"
echo "mysql database has an error state, not the display YES" > error.txt
mail -s "mysql master/slave" xxxx@xxx.com < error.txt
fi
以上的脚本你明白流程了吗:
1.导出两个服务器想对应的库内的所有的表,并分别存于两个不同的文件下
2.上一步所导出的表为基础,再把表进行统计,统计数每个表的数据有多少,并且分别保存
3.执行上面两个脚本,并进行对比。。。。
###################
这个脚本有一点不足,我也正在想办法改进,就是两个库内某个表的数据不一致的话,会不停的发邮件,对比那里应该要用别的方法吧,如有好的办法,欢迎指教...
页:
[1]