panjianm 发表于 2018-8-24 13:30:43

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]
查看完整版本: shell检查Mysql主从备份状态