早上刚睁眼,看到了一堆数据库告警的短信,其中一个内容如下:

Problem started at 05:02:58 on 2019.10.12
Problem name: Slave is stopped on 192.168.56.31:3306
Host: 192.168.56.31
Severity: High

眼看这是刚从其他DBA交接过来的数据库,不敢怠慢,立马起来查看从库日志信息如下:

2019-10-12T05:01:16.506540+08:00 1 [Note] Slave I/O thread killed while reading event for channel ''
2019-10-12T05:01:16.506605+08:00 1 [Note] Slave I/O thread exiting for channel '', read up to log 'mybinlog.001265', position 388024306

即非正常停止。

再登录主库机器查看主库错误日志,信息如下

2019-10-12T05:01:59.414412+08:00 373818 [Note] Aborted connection 373818 to db: 'unconnected' user: 'repl' host: '192.168.56.31' (failed on flush_net())
2019-10-12T05:01:59.414424+08:00 407536 [Note] Aborted connection 407536 to db: 'unconnected' user: 'repl' host: '192.168.56.49' (failed on flush_net())

从主库日志可以看出,2个从库是主库主动断开的,而给出的信息也指出了原因failed on flush_net()。另外还有很多 Got timeout reading communication packets 的信息。

因为mysqld是一个多线程的C/S架构的网络应用,主从同步及数据的读取是通过网络来读写数据,所以可能会出现写数据失败的情况。如果mysql的错误日志中出现failed on flush_net()这类的错误时,即说明主库的mysqld在向客户端发送网络包时失败导致的。在主从这种复制场景下则说明是复制过程中master向slave推送binlog写网络数据包失败。
出现此类问题的可能是TCP拥堵等情况造成的,因此建议生产环境的操作系统参数进行调整。可参考如下方式修改

/**  在 /etc/sysctl.conf 文件目录末尾增加如下参数 */

kernel.sem=
net.ipv4.tcp_syncookies =
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_tw_recycle =
net.ipv4.tcp_fin_timeout = /** 使参数生效 */
sysctl -p

生产环境涉及MySQL数据的操作系统部分参数需要根据情况进行调整,同时MySQL参数也需要根据操作系统的配置情况及实际网络情况进行调整,这样数据库才能稳定、高效的运行。

本次优化的参数在之前MySQL部署时有提及,需要了解的同学可以回看,也可以与我沟通,谢谢。

想进一步沟通或想了解其他文章的同学可以关注我的微信公众号进行交流。

排坑日记之批量从库IO进程停止的更多相关文章

  1. 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记

    SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...

  2. 人工智能(AI)库TensorFlow 踩坑日记之一

    上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...

  3. AI相关 TensorFlow -卷积神经网络 踩坑日记之一

    上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...

  4. .Net Core 爬坑日记

    安装[DotNetCore.1.0.1-VS2015Tools.Preview2.0.3.exe]失败 查看log发现,发现猫腻,然后copy下链接,用迅雷手动下载[AspNetCoreLocalFe ...

  5. hexo博客谷歌百度收录踩坑日记

    title: hexo博客谷歌百度收录踩坑日记 toc: false date: 2018-04-17 00:09:38 百度收录文件验证 无论怎么把渲染关掉或者render_skip都说我的格式错误 ...

  6. Hexo搭建静态博客踩坑日记(二)

    前言 Hexo搭建静态博客踩坑日记(一), 我们说到利用Hexo快速搭建静态博客. 这节我们就来说一下主题的问题与主题的基本修改操作. 起步 chrome github hexo git node.j ...

  7. Hexo搭建静态博客踩坑日记(一)

    前言 博客折腾一次就好, 找一个适合自己的博客平台, 专注于内容进行提升. 方式一: 自己买服务器, 域名, 写前端, 后端(前后分离最折腾, 不分离还好一点)... 方式二: 利用Hexo, Hug ...

  8. redis批量灌库

    需求:将批量数据灌入redis中 如果通过代码形式将数据灌入redis中,效率比较低,以下将根据redis的特性进行快速的批量灌库 环境:centos7 将数据整理成规定格式的文件,比如: SET k ...

  9. oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)

    0   前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...

随机推荐

  1. HDU5461 Largest Point 思维 2015沈阳icpc

    Largest Point Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  2. MongoDb 快速翻页方法

    翻阅数据是MongoDB最常见的操作之一.一个典型的场景是需要在你的用户界面中显示你的结果.如果你是批量处理的数据,同样重要的是要让你的分页策略正确,以便你的数据处理可以规模化. 接下来,让我们通过一 ...

  3. 通过对微信pc hook实现微信助手

    本软件主要通过对pc端微信hook来实现的,微信版本2.6.8.52. 软件下载地址: http://blog.yshizi.cn/104.html 软件实现功能: 支持爆粉 支持文本消息群发 支持自 ...

  4. 063 Python必备库-从人机交互到艺术设计

    目录 一.概述 二.Python库之图形用户界面 2.1 PyQt5 2.2 wxPython 2.3 PyGObject 三.Python库之游戏开发 3.1 PyGame 3.2 Panda3D ...

  5. 一次搞懂建模语言UML

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到 ...

  6. Mybatis使用入门,这一篇就够了

    mybatis中,封装了一个sqlsession 对象(里面封装有connection对象),由此对象来对数据库进行CRUD操作. 运行流程 mybatis有一个配置的xml,用于配置数据源.映射Ma ...

  7. Winform中使用DevExpress时给控件添加子控件的方法

    场景 在WInform中使用DevExpress时经常使用PanelControl控件用来进行布局设计,因此需要在代码中生成控件并添加子控件. 实现 一种是设置要添加的自控件的Parent属性为容器控 ...

  8. 12 (OC)* AFNetworking

    AFNetworking主要是对NSURLSession和NSURLConnection(iOS9.0废弃)的封装,其中主要有以下类:1). AFHTTPRequestOperationManager ...

  9. 新手学习FFmpeg - 调用API完成两个视频的任意合并

    本次尝试在视频A中的任意位置插入视频B. 在上一篇中,我们通过调整PTS可以实现视频的加减速.这只是对同一个视频的调转,本次我们尝试对多个视频进行合并处理. Concat如何运行 ffmpeg提供了一 ...

  10. centos7 supervisor管理redis

    centos7 supervisor管理redis 标签(空格分隔): linux,redis 概念 Supervisor 相当强大,提供了很丰富的功能,不过我们可能只需要用到其中一小部分 super ...