#!/bin/bash

###########################################################
#                                                         #
# 此脚本是用来当主从同步不一致时,跳过报错的语句,从      #
# 下一条语句开始同步,如果跳过30次仍报错,请重新导入数据。#
#                                                         #
###########################################################

export LANG=zh_CN

v_dir=/usr/local/mysql/bin/
v_user=root
v_passwd=123456

echo "" > /root/slave_status.log

count=1

while true
do

  Seconds_Behind_Master=$(${v_dir}mysql -u${v_user} -p${v_passwd} -e "show slave status\G;" | awk -F':' '/Seconds_Behind_Master/{print $2}')
 
  if [ ${Seconds_Behind_Master} != "NULL" ];then
 
     echo "slave is ok!"

     ${v_dir}mysql -u${v_user} -p${v_passwd} -e "show slave status\G;" >> /root/slave_status.log
 
     break

  else

     ${v_dir}mysql -u${v_user} -p${v_passwd} -e "stop slave;SET GLOBAL sql_slave_skip_counter=1;start slave;"
 
     let count++

     if [ $count -gt 30 ];then
 
        echo "主从数据将不完整,建议重新建立快照,做同步。"

        break
   
     else

        ${v_dir}mysql -u${v_user} -p${v_passwd} -e "show slave status\G" >> /root/slave_status.log

        sleep 2

        continue

     fi
  fi
done