Heim >Datenbank >MySQL-Tutorial >share一个自动跳mysql从库上1062错误的脚本_MySQL

share一个自动跳mysql从库上1062错误的脚本_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:37:411338Durchsuche

bitsCN.com


share一个自动跳mysql从库上1062错误的脚本

 

 从库突然掉电可能会导致log里的信息没flush到硬盘,于是从库启动之后主从会因为1062(主键重复)而卡住,这里提供一个自动跳1062的脚本

[plain] 

#!/bin/sh  

  

MYSQL=mysql  

  

lastPos=0  

while [ 1 ]; do  

        $MYSQL -uroot -e "show slave status/G" > /tmp/.skip  

        lastError=`cat /tmp/.skip|grep "Last_SQL_Errno"|awk '{print $2}'`  

        nowPos=`cat /tmp/.skip|grep "Exec_Master_Log_Pos"|awk '{print $2}'`  

        if [ $lastError -eq 1062 ]; then  

                if [ $lastPos -ne $nowPos ]; then  

                        echo "blocked, skip one"  

                        $MYSQL -uroot -e "slave stop; set global sql_slave_skip_counter =1; slave start;"  

                        lastPos=$nowPos  

                else  

                        echo "sleep one second"  

                        sleep 1  

                fi  

        elif [ $lastError -eq 0 ]; then  

                secondsBehind=`cat /tmp/.skip|grep "Seconds_Behind_Master"|awk '{print $2}'`  

                if [ $secondsBehind -eq 0 ]; then  

                        echo "done"  

                        break  

                else  

                        echo "$secondsBehind seconds behind server"  

                        sleep 3  

                fi  

        else  

                echo "error $lastError found"  

                break  

        fi  

done  

 

 

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn