check slave状态并跳过相应错误

一、具体代码
#!/bin/bash
#--------------------------------------------------
#Author:jimmygong
#Email:[email protected]
#FileName:checkslave.sh
#Function: 
#Version:1.0 
#Created:2015-12-29
#--------------------------------------------------
if [[ `id -u` -ne 0 ]]
then
    echo "script need root"
    exit 1
fi
#根据情况修改变量信息
mysqluser="root"
mysqlpass="123456"
mysqlport=3398
mysqlsocket="/opt/mysql/socket/$mysqlport.sock"
nowtime=$(date +"%m-%d %H:%M:%S")
#各个错误代码解释
1158网络错误,出现读错误,请检查网络连接状况
1159网络错误,读超时,请检查网络连接状况
1008数据库不存在,删除数据库失败
1007数据库已存在,创建数据库失败
1062字段值重复,入库失败
1452不能删除或更新父行,外键约束失败
PS:1452这个根据情况跳过错误。
allerror=(1158 1159 1008 1007 1062 1452)
function redirectlog ()
{
    currdate=$(date +%Y%m%d)
    logdir="/root/checkslave"
    logfile=$logdir/${currdate}
    mkdir -p $logdir
    exec 1>$logfile
    exec 2>$logfile
}
function mysqlconn ()
{
    comm=$1
    mysql -u${mysqluser} -p${mysqlpass} -S ${mysqlsocket} -e "$comm"
}
function checkrun ()
{
    esport=$(lsof -i:$mysqlport|wc -l)
    if [[ $esport -lt 2 ]]
    then
    echo "Mysql Server Failed"
    exit 1
    fi
}
function statuserror ()
{
    for((i=0;i<${#allerror[*]};i++))
    do
        if [[ "$1" == "${allerror[$i]}" ]]
        then
            mysqlconn "stop slave;set global sql_slave_skip_counter=1;start slave;"
        else 
            echo "$nowtime MySQL slave is failed $1"
        fi
    done
}
function checkslave ()
{
    status=($(mysqlconn "show slave status\G"|egrep -i "_running|last_errno"|awk ‘{print $NF}‘))
    if [[ "${status[0]}" == "Yes" ]] && [[ "${status[1]}" == "Yes" ]]
    then
        echo "MySQL Slave Ok"
    else
        statuserror ${status[2]}
    fi
}
function main ()
{
    while true
    do
        checkrun
        checkslave
        sleep 60
    done
}
redirectlog
main

二、相关日志都记录在
cat checkslave/20151226 |more
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
12-26 16:16:00 MySQL slave is failed 1452
时间: 2024-10-05 08:22:20

check slave状态并跳过相应错误的相关文章

MySQL跳过主从错误工具(mysqlha_skiperror.sh)

工具名称:mysqlha_skiperror.sh 工具用途:用于MySQL跳过主从错误 工具参数:options: -P port   指定端口                   -N number   指定跳过错误次数  不指定默认为10次(如果不知道可以设置大一些,会记录log) -C      error code  Take ,  as the separator  指定跳过错误的状态码 可以跳过多个以,分隔 工具示例: mysqlha_skiperror.sh -P 4444 -C

mysql数据库同步跳过临时错误[转]

mysql数据库同步跳过临时错误slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave start; 几个跟热备有关的mysql命令:(需要在mysql命令行界面或query ) stop slave #停止同步 start slave #开始同步,从日志终止的位置开始更新. show slave status #查看同步状态 SET SQL_LOG_BIN=0|1 #主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一

MySQL slave状态之Seconds_Behind_Master

在MySQL的主从环境中,我们能够通过在slave上运行show slave status来查看slave的一些状态信息,当中有一个比較重要的參数Seconds_Behind_Master.那么你是否明确它的真正含义以及它是怎么计算的呢? 在之前我一直误以为Seconds_Behind_Master是表示slave比master落后多少,假设这个值为0的表示主从已经处于一致了(在非同步模式下,如今官方最多也仅仅在5.5中添加?了半同步复制).可是近期我最终认识到之前的错误理解.首先我们须要明确的

Springboot 构建http服务,返回的http行是&#39;HTTP/1.1 200&#39; 无状态码描述 客户端解析错误

----------------------------------------- *** 响应的数据格式 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"27-1432777730225" Last-Modified: Thu, 28 May 2015 01:48:50 GMT Content-Type: text/html Content-Length: 27 Date: Thu, 28

MySQL跳过复制错误

在MySQL中,有两种跳过复制错误的方法:1.对于未使用GTID的复制,可以使用sql_slave_skip_counter来跳过错误2.对于使用GTID的复制,可以使用GTID_NEXT模拟空事务来跳过错误 ================================================使用sql_slave_skip_counter跳过错误 对于set global sql_slave_skip_counter=N1>N代表N个event2>当N=1时,代表跳过下一个事务,

JSP中,当页面为404或者500时。设置跳转到错误提示页面

最好的就是在WEB.XML文件中配置错误代码的跳转页面,首先建立个 出现500错误的页面,提示出错了,然后再WEB.XML文件中配置,配置如下 一. 通过错误码来配置error-page <error-page> <error-code>404</error-code> <location>/NotFound.jsp</location> </error-page> <error-page> <error-code&

HTTP 499状态码 nginx下499错误及其解决方法

HTTP 499 状态码 nginx下 499错误: HTTP 499 状态码 nginx下 499错误 日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awst

【转】HTTP 499 状态码 nginx下 499错误

HTTP 499 状态码 nginx下 499错误 日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awstats日志),分析后发现日志中很多错误码为499的错误

记录一下做小程序tab切换并保存check选中状态的操作。

这里需要记录下你当前选中check的状态(具有唯一性的都可以).我是直接存在storage里面了.然后切换的时候拿数据列表的值和缓存中的值进行比较.如果符合的话就选中.但是一般的单层for循环无法完成.会有一些问题达不到目的.利用双层循环的话来比对他们的值就行了 reg = "缓存数组中的值" this.goodsList = "拿到的数据" for (let i = 0; i < this.goodsList.length; i++) { for (let