告警信息

check_ins_slave_io_running (err_cnt:1)critical-  slaveio not run on ins:3014,3051,3060,3079,3097,3104,3106,3107,3108,3116,3119,3123,3170,3150,3151

复制错误

    错误1:

Last_IO_Errno: 1159 (ER_NET_READ_INTERRUPTED)

Last_IO_Error: The slave I/O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master. Error:

错误2:

Last_IO_Errno: 1593 (ER_SLAVE_FATAL_ERROR)

Last_IO_Error: The slave I/O thread stops because SET @master_heartbeat_period on master failed. Error:

分析

1 首先从告警信息,同一主机出现大量实例的复制错误。首先可以排出是mysql问题。应该是外部环境导致,例如网络,硬件故障等。

2 错误1159即ER_NET_READ_INTERRUPTED网络中断,由此可以推断是网络问题导致

3 从错误信息中,Last_IO_Error: The slave I/O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master。定位源码可看到,IO thread每次启动io_thread从主库拉binlog是都有以下逻辑,(handle_slave_io-> get_master_version_and_clock)检查serverid是否重复,时间钟,时区,字符集,设置master heartbeat等. 此错误是在检查serverid时发生网路中断所致。

类似的错误还有:

Get master TIME_ZONE failed with error:xxx

处理方法

stop slave;start slave; 即可恢复

附:

http://dev.mysql.com/doc/refman/5.5/en/change-master-to.html change master 时可以指定MASTER_CONNECT_RETRY表示连接断开重试间隔时间,master-retry-count是mysqld启动命令行参数表示连接重试次数 。http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html#option_mysqld_master-retry-count.

为什么这个错误没有重连呢,原因是这个错误出现后,用户退出了io_thread线程。重连是io_thread发出的,因此自然就不会重连了。看如下日志:

140814  8:40:05 [Note] Event Scheduler: scheduler thread started with id 93413

140814  8:40:49 [ERROR] Slave I/O: The slave I/O thread stops because SET @master_heartbeat_period on master failed. Error: , Error_code: 1593

140814  8:40:49 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000012', position 107

问题:

is_network_error函数判断没有把ER_NET_READ_INTERRUPTED加入到网络错误中。

bool is_network_error(uint errorno)

{

if (errorno == CR_CONNECTION_ERROR ||

errorno == CR_CONN_HOST_ERROR ||

errorno == CR_SERVER_GONE_ERROR ||

errorno == CR_SERVER_LOST ||

errorno == ER_CON_COUNT_ERROR ||

errorno == ER_SERVER_SHUTDOWN)

return TRUE;

return FALSE;

}

这里如果修改认为ER_NET_READ_INTERRUPTED为网络错误,就不会退出io_thread线程,并且会重连。

不过如果这样重连会导致用会忽略get_master_version_and_clock里面的后续检查,这个应该选择退出io_thread线程,而不重连的原因吧。

网络闪段致slave 出错分析的更多相关文章

  1. [原] KVM虚拟机网络闪断分析

    背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等.但是在出现网络问题的 ...

  2. KVM虚拟机网络闪断分析

    https://www.cnblogs.com/Bozh/p/5484838.html 背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况 ...

  3. 20155323刘威良《网络对抗》Exp4 恶意代码分析

    20155323刘威良<网络对抗>Exp4 恶意代码分析 实践目标 1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件: ...

  4. 故障分析:网络闪断引发的ServiceStack.Redis死锁问题

    背景说明 某天生产环境发生进程的活跃线程数过高的预警问题,且一天两个节点分别出现相同预警.此程序近一年没出现过此类预警,事出必有因,本文就记录下此次根因分析的过程. 监控看到的线程数变化情况: 初步的 ...

  5. 2018-2019-2 20165325 网络对抗技术 Exp4 恶意代码分析

    2018-2019-2 20165325 网络对抗技术 Exp4 恶意代码分析 实验内容(概要) 一.系统(联网)运行监控 1. 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,逐步排查并且 ...

  6. 20155227《网络对抗》Exp4 恶意代码分析

    20155227<网络对抗>Exp4 恶意代码分析 实践目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分 ...

  7. 20155302《网络对抗》Exp4 恶意代码分析

    20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...

  8. 20155304《网络对抗》Exp4 恶意代码分析

    20155304<网络对抗>Exp4 恶意代码分析 实践内容 1.系统运行监控 1.1使用schtasks指令监控系统运行 我们在C盘根目录下建立一个netstatlog.bat的文本文件 ...

  9. 20155310 《网络攻防》Exp4 恶意代码分析

    20155310 <网络攻防>Exp4 恶意代码分析 基础问题 1.如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些, ...

随机推荐

  1. Spark Idea Maven 开发环境搭建

    一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...

  2. Nginx配置文件(nginx.conf)配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  3. zstu2016校赛圣杯战争

    这题不知道为什么就是T,简直有毒. 思想和巴比伦那题差不多. 话说,寻找一个区间内满足一个条件的最左(右)边的一个数,用线段树来写,应该是可以的,之前博客里大连网赛那题的线段树写法应该是有点小问题的. ...

  4. codeforce div 377

    #include <bits/stdc++.h> using namespace std; #define pb push_back #define lb lower_bound #def ...

  5. GUI开发者桌面搜索文件工具

    # - *- coding:utf-8-*-from Tkinter import *import tkMessageBoximport tkFileDialogimport osimport fnm ...

  6. SQL in与exists

    无可置疑,如果in()的结果集非常庞大,那么效率必然是低的. 但EXISTS subquery根据其语法可知在SQL中的作用是:检验查询是否返回数据.如果在 Dictionary 对象中指定的关键字存 ...

  7. pickle

    [pickle] Python提供了pickle模块来实现序列化. 首先,我们尝试把一个对象序列化并写入文件: pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个by ...

  8. ArcGIS Wpf MarkerSymbol 图形符号无法序列化为 JSON

    [问题贴,尚不知如何解决] 在GraphicsLayer中添加一个点,使用自定义模板渲染该点,在Vs2012设计界面可以看到,但运行时出现异常 代码如下: <esri:Graphic x:Nam ...

  9. Asp.net web api部署在某些服务器上老是404

    asp.net web api部署在Windows服务器上后,按照WebAPI定义的路由访问,老是出现404,但定义一个静态文件从站点访问,却又OK. 这时,便可以确定是WebAPI路由出了问题,经调 ...

  10. Android消息机制:Looper,MessageQueue,Message与handler

    Android消息机制好多人都讲过,但是自己去翻源码的时候才能明白. 今天试着讲一下,因为目标是讲清楚整体逻辑,所以不追究细节. Message是消息机制的核心,所以从Message讲起. 1.Mes ...