第92讲:MySQL主从复制集群故障排查思路汇总

文章目录

    • 1.从库I/O线程处于Connecting状态
    • 2.从库I/O线程处于No状态
    • 3.从库SQL线程处于No状态

1.从库I/O线程处于Connecting状态

从库的I/O线程处于Connection连接中的状态,一般都是连接不上主库导致:

  • 可能由于网络不通,防火墙的干扰导致从库连不上主库,此时就会处于Connecting状态。
  • 主库地址写错了,地址压根不是主库的地址。
  • 复制用户不存在,导致从库无法通过复制用户连接主库。
  • 主库的连接数上限,导致从库无法连接主库。

产生Connecting状态大多数情况下,都是复制用户不存在,或者密码不对,导致连不上主库,可以在从库服务器中使用mysql命令登录复制用户,观察是否能到登录成功,如果登录不上,就表示是复制用户的问题,导致I/O线程处于Connecting状态。

2.从库I/O线程处于No状态

从库的I/O线程处于No状态,可能是以下原因导致:

  • 配置从库复制主库的参数时,指定的主库Binlog日志在不对,指定的Binlog在主库中并不存在,就会导致I/O线程处于No状态。
  • 配置从库复制主库的参数时,指定的主库Binlog日志标识位号不对,也会导致I/O线程处于No状态。
  • 主库的日志损坏,从库无法从指定的Binlog日志进行数据同步,例如主库突然执行了reset matser,导致主库的Binlog全部清空,而从库正在复制主库的某个Binlog,此时从库就无法在主库中找到这个Binlog,就会导致I/O线程处于No状态。
  • Server_id如果重复也会导致I/O线程处于No状态。

下面模拟主库Binlog日志损坏,从库无法请求指定的Binlog,从而导致I/O线程处于No故障状态以及恢复处理过程。+

1)主库破坏Binlog日志

1.多刷新几次产生新的Binlog
mysql> flush logs;
mysql> flush logs;
mysql> flush logs;

当主库刷新Binlog日志后,从库也会跟着请求到最新的Binlog日志。

image-20220707220208784

2.主库破坏Binlog
mysql> reset master;

2)从库的I/O线程处于No状态

从库的状态I/O线程立马变成No状态,从库要请求00004Binlog日志,但是主库的只有00001Binlog日志,没有从库要找的00004Binlog日志,此时就会处于No状态。

image-20220707220404877

并且会报错说从库要请求mysql-bin.000004二进制日志,但是主库只有mysql-bin.000001二进制日志,没有从库要请求的日志,因此I/O会报错。

Got fatal error 1236 from master when reading data from binary log: 'could not find next log; the first event 'mysql-bin.000001' at 452, the last event read from './mysql-bin.000004' at 194, the last byte read from './mysql-bin.000004' at 194.'

3)此时主库又产生了新的操作

此时主库又发生了新的操作,创建了一个db_test库,而从库现在没法复制这些数据。

mysql> create database db_test;

4)处理方法

I/O状态目前处于No的状态,我们已经知道原因了,就是从库要请求主库的Binlog日志不对,我们调整一下请求的Binlog日志,然后指定Binlog标识位号为从库I/O线程故障时的标识位号,保证主从的数据同步。

mysql> stop slave;
mysql> reset slave all;
mysql> CHANGE MASTER TO
  MASTER_HOST='192.168.20.11',
  MASTER_USER='replicas',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=154,
  MASTER_CONNECT_RETRY=10;
mysql> start slave;

主库重新生成了新的Binlog日志,并且也产生了数据,我们不好确定从库故障时,主库的Binlog位置号,因此我们直接从154号开始同步,一定是最全的数据,重新配置主从同步信息,Binlog指对之后,从库的I/O状态正常。

image-20220707221439130

3.从库SQL线程处于No状态

SQL线程主要是读取relay-log.info获取relay-log的位置号,然后执行relay-log中主库推送来的Binlog日志,然后再更新relay-log.info文件。

当SQL线程状态为No,主库发送来的Binlog日志,从库无法执行,从而导致数据不同步。

导致SQL线程处于No状态的原因:

  • relay-log.info、rela-log文件损坏,就会导致SQL线程处于No状态,解决办法最好是重新构建主从。
  • 如果主库发送来的Binlog日志在从库执行失败,就会导致SQL线程处于No状态,主库发送来的Binlog日志为什么会执行失败?
    • 如果数据库版本差异较大,不建议配置成主从集群,很有可能主库发来的Binlog日志,在从库中不能执行,导致SQL线程异常。
    • 主库和从库的配置参数不一致,也会导致SQL不能执行。
    • 当主库要创建的表或者数据库,已经在从库中存在了,就会导致Binlog中创建对象的语句报错,从而使SQL线程出现故障,为什么主库要创建的对象在从库中存在了呢?很有可能有人误操作,连接上了主库,在主库中执行了创建对象的语句,建议将从库设置成只读模式,防止使用从库写入数据。
    • 当主库要删除或者修改表、数据库时,这些对象在从库不存在,也会导致SQL执行失败,原因也看是误操作连上了从库进行了这些对象的处理。

如果真的有人在从库中写入了数据,SQL线程故障了,状态为No,并且写入的数据是无关紧要的,可以通过以下命令,跳过失败的SQL,使SQL线程恢复正常。

stop slave;
set global sql_slave_skip_counter = 1;

也可以修改配置文件,将可能在从库误操作导致SQL无法执行的几种错误号,配置在配置文件中,全部跳过,但是不合理。

vim /etc/my.cnf
slave-skip-errors = 1032,1062,1007

最合理的避免人员在从库误写入数据的方法,就是给从库设置为只读模式,或者配置读写分离,通过中间件,将写的操作写入到主库,读的操作写入到从库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/344394.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB系列之一文总结索引

概述 分类 索引的分类: 按照索引包含的字段数量,可分为单键索引(单字段索引)和组合索引(联合索引、复合索引)按照索引字段的类型,可以分为主键索引和非主键索引按照索引节点与物理记录的对应…

2024免费mathtype7.4.4安装注册步骤教程

数学建模中对公式的编辑有很高的要求,mathtype是一款专业的数学公式编辑工具,能够帮助用户在各种文档中插入复杂的数学公式和符号。 一 Mathtype 的下载安装 1.1 安装前须知 解压和安装前,需要将电脑的杀毒软件或者防火墙关掉,如…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-后台管理主页面实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

vue3跨域请求及一些常用配置

在使用vue3开发的时候,总免不了做一些基础的配置。比如跨域配置,一些常用函数的封装等等。接下来,我就做一些自己在在开发中所运用到一些常用配置。 一、跨域配置 其实,对于跨域配置,我之前的博文中也有说过&#xff0…

Linux的常见指令和基本操作演绎【复习篇章一】

文章目录 前言下载安装 XShellXShell 下的复制粘贴热键操作01.ls指令tree 02.cd指令03.touch指令04.mkdir指令(重要):05.rmdir指令 && rm 指令(重要)06.组合07.man指令(重要)&#xff1…

Packet Tracer - VLAN 间路由练习

地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 G0/0 172.17.25.2 255.255.255.252 不适用 R1 G0/1.10 172.17.10.1 255.255.255.0 不适用 R1 G0/1.20 172.17.20.1 255.255.255.0 不适用 R1 G0/1.30 172.17.30.1 255.255.255.0 不适用 R1 G0/1.…

前景贴纸类特效SDK,面向企业的技术解决方案

随着数字媒体技术的快速发展,视频内容在社交媒体、广告、教育等领域的应用越来越广泛。为了增加视频的吸引力和趣味性,许多企业开始寻求在视频中添加特效和贴纸。美摄科技的前景贴纸类特效SDK为企业提供了一种高效、灵活的解决方案,满足不同的…

R语言VRPM包绘制多种模型的彩色列线图

列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者…

生命在于折腾——WeChat机器人的研究和探索

一、前言 2022年,我玩过原神,当时看到了云崽的QQ机器人,很是感兴趣,支持各种插件,查询游戏内角色相关信息,当时我也自己写了几个插件,也看到很多大佬编写的好玩的插件,后来因为QQ不…

微信聊天记录生成词云

目录 前置准备一、获取微信聊天记录(一)配置MuMu模拟器(二)微信数据备份与恢复(三)获取微信聊天记录文件至电脑(四)获取EnMicroMsg.db的密钥(五)使用SQLciphe…

详解线性分组码(linear code)

目录 一. 介绍 二. 线性分组码 三. 生成矩阵 四. 对偶编码 五. 校验矩阵 六. 陪集编码 七. 小结 一. 介绍 Low-density parity-check,简称LDPC码,翻译为低密度奇偶校验码。 我们所熟悉的LDPC码就是一个典型的线性分组码(linear bloc…

2023年度AI盘点 AIGC|AGI|ChatGPT|人工智能大模型

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 2023年是人工智能大语言模型大爆发的一年,一些概念和英文缩写也在这一年里集中出现,很容易混淆,甚至把人搞懵。 文章目录 前言01 《ChatGPT 驱动软件开…

气象条件对铸铁平台地基深度有哪些影响呢——河北北重

气象条件对铸铁平台地基有以下影响: . 1.地震 地震可能导致地基的震动和错动,因此地震活跃区域的建筑物通常需要更深的地基以提供更大的稳定性。 2..温度变化:气温的变化会导致地基中的土壤膨胀和收缩,从而影响地基的稳定性。特…

展厅设计更好的方法

一、与公司形象契合 在展厅规划时必定要留意公司的LOGO、主色调,以及企业文明。在展现时使用丰满的展厅规划传达出企业的理念。而在功用设置上,应当考虑内涵功用,从展厅作业人员的视点动身,为展厅作业人员提供杰出的环境&#xff…

书生·浦语大模型实战营-学习笔记6

目录 OpenCompass大模型测评1. 关于评测1.1 为什么要评测?1.2 需要评测什么?1.3 如何评测?1.3.1 客观评测1.3.2 主观评测1.3.3 提示词工程评测 2. 介绍OpenCompass工具3. 实战演示 OpenCompass大模型测评 1. 关于评测 1.1 为什么要评测&#…

《WebKit 技术内幕》学习之五(4): HTML解释器和DOM 模型

4 影子(Shadow)DOM 影子 DOM 是一个新东西,主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

单域名证书,多域名证书,通配符证书怎么选?了解这些就够了

首次购买证书时,我们经常遇到不知道选择那种证书,由于缺乏相关的了解,稍不留神,就会踩坑!那初次购买证书时,了解这几点其实就足够了! 第一点,了解证书的类型。 证书一般分为DV&am…

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…

acwing 动态规划dp 0 1背包问题

前言 hello小伙伴们,最近由于个人放假原因颓废了一段时间很长时间没有更新CSDN的内容了,唉,毕竟懂得都懂寒暑假静下心来学习的难度远比在学校里大的多。 但是,也不是毫无办法克服,今天我来了我们当地的一家自习室来学习…

大数据开发之Spark(RDD弹性分布式数据集)

第 1 章:rdd概述 1.1 什么是rdd rdd(resilient distributed dataset)叫做弹性分布式数据集,是spark中最基本的数据抽象。 代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 1.1…
最新文章