#作者:stackofumbrella

文章目录

  • 一、前言
  • 二、故障概述
    • 2.1 基础信息
    • 2.2 故障现象描述
  • 三、故障诊断分析
    • 3.1 排查过程
    • 3.2 问题根因
  • 四、故障解决方案 📊
    • 4.1 解决方案 🛠️
  • 五、总结
  • 附件

一、前言

在磐基系统中大量使用MySQL作为后端的数据存储,支撑着各类关键业务的数据读写需求。为保障数据的高可用性与业务连续性,实现数据的冗余备份,普遍采用MySQL主从复制架构。但在使用过程中,较频繁的出现从库被写入数据的问题,导致主从数据不一致,影响业务的正常运行。因此,配置合理参数,防止从库被写入数据,显得尤为重要。

二、故障概述

2.1 基础信息

磐基版本:kem
涉及组件:MySQL 5.7.38
参考范围:所有使用MySQL的业务系统

2.2 故障现象描述

磐基租户在使用MySQL主从同步过程中从库同步异常,导致主从数据不一致。
在这里插入图片描述

三、故障诊断分析

3.1 排查过程

通过查看show slave status\G状态信息,从错误信息可以看出从库在同步mysql-bin.000010文件的偏移量位置为830237357的数据时候出现错误。从库具体报错信息如下:
Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ‘ANONYMOUS’ at master log mysql-bin.000010, end_log_pos 830237357. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

从错误信息中可以看出,查看performance_schema.replication_applier_status_by_worker表可以获取更详细的信息,因此在从库执行SQL语句select * from performance_schema.replication_applier_status_by_worker查询结果如下图所示:
在这里插入图片描述
在查询结果中看出,在更新某个库的某个表时发生了错误,找到这个表和主库进行对比,发现从库比主库的数据较新且数据量多于主库。
另外可以根据查询结果,到主库找到对应的mysql-bin.000010二进制文件,使用如下命令找到偏移量830237357前后的SQL语句,查看到底是哪些操作,在与从库数据对比并更正,跳过错误的事件或者删除某些数据:

# mysqlbinlog --no-defaults -v -v --base64 --output=decode-rows /var/lib/mysql/mysql-bin.000010 | grep -A 20 “830237357” --color

注意:此命令针对数据量不大的情况使用,对于大量差异数据,还是采用下面章节的方法。

3.2 问题根因

业务在连接数据库时,配置DNS域名地址,使得主从数据库被轮询访问,而从库中并未配置只读参数,这样就会导致从库中被写入了大量数据,从而进一步导致主从同步不一致。

四、故障解决方案 📊

4.1 解决方案 🛠️

注意:请提前备份好主从库数据,再执行SQL语句:

mysql> stop slave;
mysql> set global sql_slave_skip_counter=1; #跳过一个事务,可以执行多次
mysql> start slave;
mysql> show slave status\G;

或者执行:

mysql> stop slave;
mysql> reset slave;    #重置同步
mysql> start slave;
mysql> show slave status\G;

以上方式只适用于同步过程中出现的较少错误,对于较多同步错误,需要为从库添加只读参数,修改部署mysql的deploy清单文件,添加arg参数:

arg:
- --read_only=1
- --super_read_only=1
- --slave-skip-errors=all

重启deploy后,主从恢复正常同步

五、总结

MySQL的read_only参数可以让整个MySQL实例普通权限用户处于只读状态,但并不能限制拥有super权限的用户。read_only参数一般是用于主从复制从库的配置,目的是为了规避从库误写数据,导致主从复制异常或者主从数据不一致的隐患。另外,为了避免从库被super权限用户误写数据,MySQL官方在MySQL5.7版本引入了super_read_only参数来限制super用户在从库的只读属性。

附件

官方参考地址:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_super_read_only

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录算法训练营——Day10】栈与队列——232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项

LeetCode题目链接 https://leetcode.cn/problems/implement-queue-using-stacks/ https://leetcode.cn/problems/implement-stack-using-queues/description/ https://leetcode.cn/problems/valid-parentheses/description/ https://leetcode.cn/problems/remove-all-adjacent-…

Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL

在 .NET 或 .NET Core 应用中,若需在不依赖 Windows 服务、独立进程的前提下实现后台处理,Hangfire 是最成熟、简单的方案之一 —— 它可直接嵌入现有应用(如 ASP.NET Core Web 应用),无需额外部署,同时提供…

网站漏洞扫描要怎么处理?

在网络安全领域,网站漏洞是黑客攻击的重要突破口,而网站漏洞扫描能及时发现这些隐患。但很多小白在完成漏洞扫描后,不清楚后续该如何处理,导致漏洞一直存在,给网站安全埋下风险。下面从准备工作、处理步骤、验证维护等…

淘宝RecGPT:通过LLM增强推荐

导论背景 (Background)​​推荐系统的核心挑战​​:怎么 准确推断 用户行为背后快速变化的真实意图,以实现用户、商户和平台的三赢。​​现有方法的局限性​​:传统的基于历史日志共现模式(“从点击学习点击”)的模型&…

【Go系统编程】07 网络化IPC:Go的王牌——Socket编程

大家好,我是Tony Bai。欢迎来到我们《Go 系统编程》专栏的最后一讲。在过去的旅程中,我们探索了管道、消息队列、共享内存等一系列强大的 IPC 机制。它们各有所长,但都有一个共同的、致命的局限性:它们都只能在同一台物理机上工作…

claude code使用小窍门

视频地址 B站 1 /init 在项目最开始的时候,使用/init可以将项目通读一遍。cc会将学习到的关于项目的知识都保存到CLAUD.MD文件中 2、 /compact 用来压缩对话的上下文,claude会将之前的一些乱七八糟或者重复的对话删除压缩,有利于提高AI的…

The learning process of Decision Tree Model|决策树模型学习过程

----------------------------------------------------------------------------------------------- 这是我在我的网站中截取的文章,有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn,这里还有很多有关计算机的知识,欢迎进行留言或…

期货盘后空开是认购期权行权?

本文主要介绍期货盘后空开是认购期权行权?期货盘后空开与认购期权行权是两个独立的概念,无直接关联,需从交易机制、操作逻辑及市场规则三方面区分。期货盘后空开是认购期权行权?1. 定义与交易属性期货盘后空开:属于期货…

ESP32 I2S音频总线学习笔记(七):制作一个录音播放器

简介 上一篇我们利用I2S输出DIY了一个蓝牙音箱简单玩了一下,本篇我们继续来看代码。前面几篇文章我们分别介绍了I2S输入,I2S输出,以及WAV文件格式的相关内容,那我们就可以根据所学到的,制作一个录音机,具体…

PyTorch 动态图的灵活性与实用技巧

PyTorch 以其动态计算图(Dynamic Computation Graph)而闻名,这赋予了它极高的灵活性和易用性,使其在研究和实际应用中都备受青睐。与TensorFlow 1.x的静态图(需要先定义图结构,再运行)不同&…

#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!

🌟菜鸟主页:晨非辰的主页 👀学习专栏:《C语言刷题合集》 💪学习阶段:C语言方向初学者 ⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。" 前言:在学习…

复杂PDF文档结构化提取全攻略——从OCR到大模型知识库构建

在学术研究、金融分析、法律合同、工程设计等众多领域,PDF文档已成为信息存储与传递的重要载体。然而,面对包含复杂表格、公式、图表、手写批注、多栏排版等元素的PDF,传统工具往往难以准确、完整地提取内容。这不仅影响信息利用效率&#xf…

HttpClient、OkHttp 和 WebClient

HttpClient、OkHttp 和 WebClient 是 Java 生态中常见的 HTTP 客户端,它们在设计理念、异步能力、性能等方面有所不同。以下是它们的详细对比:1. 概述客户端介绍Apache HttpClient传统同步 HTTP 客户端,功能丰富,历史悠久&#xf…

书籍成长书籍文字#创业付费杂志《财新周刊》2025最新合集 更33期

免费访问地址 https://isharehubs.com/article/2025-33-26c27ee5bb9180cdafc5efbec9545ac5 资源信息 付费杂志《财新周刊》2025最新合集 更33期 《财新周刊》2025 最新合集(更至 33 期)重磅上线,聚焦年度热点与结构性变化,从监…

用python的socket写一个局域网传输文件的程序

局域网传输文件是最最常用的功能,我参考https://www.jb51.net/python/345837qrz.htm这篇文章,复制粘贴,开发了一个。但发现进度条没有用,也没有显示传输用时和传输速度的功能,于是我改写了代码,使它实现这个…

深度剖析Linux内核无线子系统架构

文章目录1、资料快车2、目录介绍2、术语3、Linux无线子系统概述4、内核无线子系统框架1)认识内核无线子系统中的三个软件框架2、无线网络子系统框架3、Android WIFI Management框架1)fullMAC和softMAC是什么?2)fullmac对比softmac…

unity UGUI 鼠标画线

using UnityEngine; using UnityEngine.EventSystems; using System.Collections.Generic; using UnityEngine.UI; /* 使用方法: 在场景中新建一个空的 GameObject(右键 -> UI -> 空对象,或直接创建空对象后添加 RectTransform 组件&am…

JSP疫情物资管理系统jbo2z--程序+源码+数据库+调试部署+开发环境

本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景与意义新冠疫情的爆发,让医疗及生活物资的调配与管理成为抗疫工作的关键环节。传…

Mem0 + Milvus:为人工智能构建持久化长时记忆

作者:周弘懿(锦琛) 背景 跟 ChatGPT 对话,比跟真人社交还累!真人好歹能记住你名字吧? 想象一下——你昨天刚把沙发位置、爆米花口味、爱看的电影都告诉了 ChatGPT,而它永远是那个热情又健忘的…