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 1032

工具执行结果:

Could not execute Write_rows event on table test.t; Duplicate entry ‘23‘ for key ‘PRIMARY‘, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event‘s master log mysql-bin.000011, end_log_pos 6621
Could not execute Write_rows event on table test.t; Duplicate entry ‘24‘ for key ‘PRIMARY‘, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event‘s master log mysql-bin.000011, end_log_pos 6800
Could not execute Delete_rows event on table testone.t1; Can‘t find record in ‘t1‘, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event‘s master log mysql-bin.000011, end_log_pos 6983
2016-08-08 17:44:25 slave is ok
count_total=3

工具log:会在当前dir下生成skiperror.txt  里面存的是详细的报错内容,看完可以删除。

例子:

#!/bin/bash

#date 2016-08-04

#author [email protected]

currentTime=`date  "+%Y-%m-%d %H:%M:%S"`

function helpfunc(){

echo

echo "Please check your input!!!!"

echo "options:"

echo " -P      port"

echo " -N      number"

echo " -C      error code  Take ,  as the separator  "

echo "        Please enter the port number and the default skip number, not the number of times the default is 10   "

}

count_num=10

code=1062,1032

if [ $# -lt 1 ] ;

then

helpfunc

exit 1

else

while getopts "P:N:C: " Option

do

case $Option in

P) port=$OPTARG;;

N) count_num=$OPTARG;;

C) code=$OPTARG;;

*) helpfunc; exit 1; ;;

esac

done

count_total=0

logdir=/data/logs/skiperror

if [ -d $logdir ];then

echo "$logdir exists"

else

mkdir -p $logdir

fi

#for ((a=0;a++;a<10));

for i in $(seq $count_num)

do

sql_yn=`/etc/dbbin/mysqlha_login.sh -P $port -e "show slave status\G" | grep  Slave_SQL_Running | awk ‘{print $2}‘`

if [ "$sql_yn" = "Yes" ];then

echo "$currentTime  slave is ok">>$logdir/skiperror.txt

echo "$currentTime  slave is ok"

echo "count_total=$count_total">>$logdir/skiperror.txt

echo "count_total=$count_total"

exit 3;

else

for error_code in $code

do

err=`/etc/dbbin/mysqlha_login.sh -P $port -e "show slave status\G" | grep  Last_Errno: | awk ‘{print $2}‘`

if [ "$err" -eq "$error_code"  ] && [ "$sql_yn" = "No" ] ;then

"$currentTime" >>$logdir/skiperror.txt

/etc/dbbin/mysqlha_login.sh -P $port -e "show slave status\G" | grep Last_SQL_Error | awk -F ‘_Error:‘ ‘{print $2}‘>>$logdir/skiperror.txt

/etc/dbbin/mysqlha_login.sh -P $port -e "show slave status\G" | grep Last_SQL_Error | awk -F ‘_Error:‘ ‘{print $2}‘

/etc/dbbin/mysqlha_login.sh -P $port -e "set global sql_slave_skip_counter=1;start slave"

#count_total=`expr $count_total + 1`

((count_total=$count_total + 1))

else

continue

fi

done

fi

done

时间: 2024-08-26 11:24:28

MySQL跳过主从错误工具(mysqlha_skiperror.sh)的相关文章

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时,代表跳过下一个事务,

如何快速解决MySQL 1032 主从错误

3分钟解决MySQL 1032主从错误 Part1:写在最前1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 解决方案 Part1:临时方案 mysql> stop slave;Query OK, 0 rowsaffected (0.00 sec) mysql> set global sql_slave_skip_counter=1;Query OK, 0 rowsaffected (0.00 sec)

3分钟解决MySQL 1032 主从错误(转)

转自  https://blog.51cto.com/suifu/1845457 3分钟解决MySQL 1032主从错误 Part1:写在最前 1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 解决方案 Part1:临时方案 mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> set global sql_slave_skip_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管理之主从同步管理

转载自:http://blog.chinaunix.net/uid-20639775-id-3254611.html MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理. MYSQL主从同步的作用 (1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)

Mysql之双向主从加keepalived高可用

最近在做MySQL数据库的双向主从,了解到keepalived能够自动判断并切换到可用数据库,自己试了一下,整理出文档来. 先声明一下环境 iptables开启3306端口或者关掉,关闭selinux MySQL-01:192.168.204.138 MySQL-02:192.168.204.139 VIP:192.168.204.200             #web服务器连接的ip,自己可以使用工具连接试一下. MySQL的安装过程就略过了,根据个人情况自己安装即可. 1.修改数据库的配置

MYSQL管理之主从同步管理 转载

MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理. MYSQL主从同步的作用 (1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错 MYSQL主从同步的原理 关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同

MySQL高可用复制管理工具 —— Orchestrator介绍

背景 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:Orchestrator(orch). Orchestrator(orch):go编写的MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等.后端数据库用MySQL或SQLite存储元数据,并提供Web界面展示MySQL复制的拓扑关系及状态,通过Web可更改MyS

mysql数据库的主从同步,实现读写分离 g

https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master主服务器的配置 2.1 配置文件my.cnf的修改 2.2 创建从服务器的用户和权限 2.3 重启mysql服务 2.4 查看主服务器状态 3 slave从服务器的配置 3.1 配置文件my.cnf的修改 3.2 重启mysql服务 3.3 连接master主服务器 3.4 启动slave数据同步