又成长了,异常掉电踩到了MySQL主从同步的坑!

news2024/11/18 9:00:47

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.主从复制简介
    • 📣 2.主从复制原理
    • 📣 3.机房掉电主从故障
      • ✨ 3.1 故障现象
      • ✨ 3.2 故障处理
    • 📣 4.知识点
    • 📣 5.故障总结


本文总结了主从复制的原理及日常运维的坑

前言

本文总结了主从复制的原理及日常运维的坑

📣 1.主从复制简介

MySQL 复制是指从一个 MySQL 主服务器(master)将数据拷贝到另一台或多台 MySQL 从服务器(slaves)的过程,将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器上,然后在从服务器上对这些日志重新执行,从而使得主从服务器的数据保持同步。

📣 2.主从复制原理

MySQL复制的基本过程如下:

  1. Slave上面的 IO 线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
  1. Master接收到来自 Slave 的 IO 线程的请求后,通过复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave端的 IO 线程。
  1. Slave的 IO 线程接收到信息后,
    将接收到的日志内容依次写入到 Slave端的 Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的 Master 端的 binlog 的文件名和位置记录到 master-info 文件中.
  1. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的SQL 语句,并在自身执行这些 SQL。

📣 3.机房掉电主从故障

✨ 3.1 故障现象

机房掉电,数据库非正常关机。
MySQL拉起后,从库报如下错误。
Slave_IO_Running: No
Slave_SQL_Running: Yes

发现从库的GTID比主库的GTID要大

--主库的GTID
mysql> show master status\G
*************************** 1. row ***************************
             File: MMK-JEM-Master1-ip31-bin.000002
         Position: 195
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-5
1 row in set (0.00 sec)

--从库执行的GTID
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 46081bff-fa3a-11ee-9d8b-0242c0a84420:1-7,
c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-2:6
                Auto_Position: 1

✨ 3.2 故障处理

1)在从上执行 reset master;
在从库上执行这个命令的作用是清空从库的 gtid
2)然后从库重置即可
mysql> stop slave;
mysql> reset slave;
mysql> start slave;
mysql> show slave status\G
3)查询从库被执行过的gtid
mysql> select @@GLOBAL.gtid_executed;
±-----------------------------------------+
| @@GLOBAL.gtid_executed |
±-----------------------------------------+
| c5833cbf-fa39-11ee-ae67-0242c0a8441f:1-2 |
±-----------------------------------------+

此时我们发现有报错信息

–解决方案,跳过从库gtid
mysql> stop slave;
mysql> set gtid_next=‘c5833cbf-fa39-11ee-ae67-0242c0a8441f:3’;
mysql> begin;commit;
mysql> set gtid_next=‘automatic’;

mysql> start slave;
mysql> SHOW SLAVE STATUS\G

–此时发现同步一切OK
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

📣 4.知识点

在MySQL中,sync_binlog参数用于控制二进制日志(binlog)的同步方式。
它决定了事务提交到binlog的时机以及是否需要等待数据同步完成才返回客户端

根据实际需求,设置sync_binlog参数的值。
0: 表示不进行同步,即异步写入binlog。
1: 表示在事务提交后立即将binlog同步到磁盘。
n: 表示在事务提交后等待n次fsync操作后将binlog同步到磁盘。

📣 5.故障总结

从二进制日志读取数据时,从主机收到致命错误1236:“使用主机的SERVER_UUID,从机的GTID比主机多。这可能表示二进制日志的末尾被截断,或者最后一个二进制日志文件丢失,例如,在sync_binlog!=1.主服务器可能已回滚或可能未回滚已复制到从属服务器的事务。建议将master已从slave回滚到master的任何事务复制到master

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE 使用 Vite 创建一个 vue3.0 + vite 项目

Vite 是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成: 1. 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。 2. 一套构建指令&#…

yolov5-6.0调测记录

直接运行yolov5-6.0/detect.py,输出如下: image 1/2 C:\Users\dun\Downloads\yolov5-6.0\data\images\bus.jpg: 640x480 4 persons, 1 bus, Done. (0.216s) image 2/2 C:\Users\dun\Downloads\yolov5-6.0\data\images\zidane.jpg: 384x640 2 persons, 2…

Java+springboot开发的医院智能导诊服务系统源码 自动兼容小程序与H5版本

智能导诊系统 一、什么是智慧导诊系统? 智慧导诊系统是一种医院使用的引导患者自助就诊挂号、精准推荐科室、引导患者挂号就诊的系统。该系统结合医院挂号及就诊的HIS系统,为患者带来全流程的信息指引提醒,可以在全院区构建一个精细化、移动…

css层叠性,继承性,优先级

前言 本文概要:讲述css的三大特性,层叠,继承和优先级。 层叠性 描述:我们试想以下这种情况:我们定义了同一个选择器,但是定义的属性不同。属性有相同的也有不同的,那么最后我们这个页面会听谁的…

Liunx入门学习 之 基础操作指令讲解(小白必看)

股票的规律找到了,不是涨就是跌 一、Linux下基本指令 1.ls 指令 2.pwd 命令 3.cd 指令 4.touch 指令 5.mkdir 指令 6.rmdir指令 && rm 指令 7.man 指令 8.cp 指令 9.mv指令 10.cat 11.more 指令 12.less 指令 13.head 指令 14.tail 指令 15…

轮腿机器人-五连杆正运动学解算

轮腿机器人-五连杆与VMC 1.五连杆正运动学分析2.参考文献 1.五连杆正运动学分析 如图所示为五连杆结构图,其中A,E为机器人腿部控制的两个电机,θ1,θ4可以通过电机的编码器测得。五连杆控制任务主要关注机构末端C点位置,其位置用直…

解读UUID:结构、原理以及生成机制

在计算机科学领域,UUID(Universally Unique Identifier)是一种用于唯一标识信息的标准。UUID的生成机制和结构设计使其在分布式系统和数据库中广泛应用。本文将深度解读UUID的结构、原理以及生成机制,帮助读者更好地理解这一重要概…

【北京迅为】《iTOP-3588开发板系统编程手册》-第14章 GPIO应用编程

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Vue3: toRefs与toRef的基本使用

一、前言 本文主要介绍toRefs与toRef的基本使用。 二、内容 1、基本概念 作用: toRefs与toRef可以将一个响应式对象中的每一 个属性,转换为ref对象;不同 toRefs与toRef功能一致,但toRefs可以批量转换。 2、toRefs 如果把reactive定义的…

论文解读-ASAP: Fast Mobile Application Switch via Adaptive Prepaging

研究背景: 用户使用移动设备同时打开多个App,很容易造成移动设备的内存紧缺。现有解决方法一般采用杀死守护进程(lmkd)来释放内存或者基于压缩算法的in-memory swap(ZRAM)方式, 这些方法会面临用户切换回被杀死的进程过…

构建有序链表,有序链表的归并,反转链表

本次将对于构建有序链表,有序链表的归并,反转链表,进行一一介绍和代码分享。 首先是一些链表中的基本的函数: Node* creatList() {Node* headNode (Node*)malloc(sizeof(Node));assert(headNode);headNode->next NULL;retu…

汽车摄像头匿名化处理解决方案,保护信息的安全性和隐私性

随着智能交通和自动驾驶技术的迅猛发展,汽车摄像头已成为现代汽车不可或缺的一部分,摄像头所捕捉的图像信息也引发了日益严峻的信息安全问题。如何在充分利用摄像头功能的同时,保障个人隐私和信息安全,已成为企业亟待解决的问题。…

CPRI协议理解——帧格式中的计数标识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 CPRI协议理解——帧格式中的计数标识 前言帧格式中的计数标识总结 前言 CPRI协议是一个流式协议,数据不间断的传输,在我们要了解CPRI到底要传输种类繁…

HDMI to TYPE-C芯片|HDMI2.0转TYPE-C转接器方案|CS5802设计方案|ASL CS5802

CS5802输入端可以是1080P、4K30、4K60HZ这三种规格,输出的接口可以是TYPE-C信号接口,或者是TYPE-C信号接口,输入端HDMI由4路信号组成,支持1.62Gbps、2.7Gbps、5.4Gbps链路速率。内置可选SSC功能可降低EMI的干扰状况。 ASL CS5802芯片概述: 符合HDMI规范…

抖去推短视频矩阵系统----源头开发

为什么一直说让企业去做短视频矩阵?而好处就是有更多的流量入口,不同平台或账号之间可以进行资源互换,最终目的就是获客留咨,提单转化。你去看一些做得大的账号,你会发现他们在许多大的平台上,都有自己的账…

基于Python利用zhconv模块进行简繁体字转换

在处理中文文本时,简繁体字之间的转换是一项常见的任务。Python提供了许多库来实现这个目的,其中之一就是zhconv。zhconv是一个Python库,提供了简体字和繁体字之间的转换功能。本教程将向你展示如何使用zhconv模块来实现简繁体字的互转&#…

【MATLAB】App 设计 (入门)

设计APP 主界面 函数方法 定时器 classdef MemoryMonitorAppExample < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access public)UIFigure matlab.ui.FigureStopButton matlab.ui.control.ButtonStartButton matlab.ui.cont…

用户行为分析模型实践(四)—— 留存分析模型

作者&#xff1a;vivo 互联网大数据团队- Wu Yonggang、Li Xiong 本文是vivo互联网大数据团队《用户行为分析模型实践》系列文章第4篇 -留存分析模型。 本文详细介绍了留存分析模型的概念及基本原理&#xff0c;并阐述了其在产品中具体实现。针对在实际使用过程问题&#xff0…

力扣---从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]示…

面试Spring框架

什么是Spring框架&#xff1f; Spring框架是一个开源的Java应用程序框架&#xff0c;提供了综合的基础设施支持&#xff0c;用于开发Java企业应用程序。它涵盖了从基本的核心容器到全面的企业服务&#xff0c;可以用于构建任何规模的应用程序。 Spring框架的核心特性是什么&am…