首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

share一个自动跳mysql从库下1062异常的脚本

2013-01-08 
share一个自动跳mysql从库上1062错误的脚本从库突然掉电可能会导致log里的信息没flush到硬盘,于是从库启动

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

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

#!/bin/shMYSQL=mysqllastPos=0while [ 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        fidone


 

热点排行