#!/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