记录一个Insert姿势引起的MySQL从库上查不到数据的问题

news2024/9/28 7:22:11

湖蓝几何球体LinkedIn Banner.png
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


问题描述:

某测试环境的MySQL用了两台节点,主从同步结构。忽然有研发同学反映说MySQL的主从不同步了。他在测试代码功能的时候,调用接口在主库insert了一条数据,然后发现在从库上查不到这条数据。于是开始排查。

原因排查:

1、查看主从同步状态

在主库和从库分别执行:show master status\G;show slave status\G;

发现从库同步的binlog的Position跟主库查询到的不一致,以为是同步延迟了。然后手动在主库创建了一个测试database,发现从库立即同步了,主从同步的点也是一致的。

2、根据数据字段排查

于是再次查看表数据,发现主从的这张表数据量是一样的,但是根据“id”这个字段去查,主库能找到数据,但是从库就是查不到。
然后换了个关键字“factoryId”去查询,发现主从库都有数据,但是两个库查询出来的数据id是不一致的:
在这里插入图片描述
在这里插入图片描述

将两条数据删掉,重新调用代码接口插入数据,结果还是一样的,两条数据的id就是不一样。

然后尝试手动insert一条语句,发现不存在这个问题:
在这里插入图片描述
在这里插入图片描述

3、排查insert语句代码

最后,研发给出的结论是这样的:
这张表的数据包含id、factoryId和appTag三个字段。
当使用代码调接口执行insert语句时,代码并没有生成id这个字段固定的id号,只有生成了factoryId和appTag这两个字段的内容。
所以写入数据的时候,只有factoryId和appTag这两个字段的内容的固定的,id号是在数据库里面自己随机生成的。而且在主库生成了id号之后,并没有让从库将主库生成的id直接inert到从库,而是在从库也随机生成一个自己的id。
所以就导致这样一种情况:同一条insert插入的数据,在主库insert的时候会随机生成一个id;在从库也会随机生成一个自己的id。当两个库都随机生成自己的id的时候,就会很高概率导致主从库上这条数据的id字段不一致,只有factoryId和appTag这两个字段是一致的。
因此,当根据id去查询数据,就会发现从库可能无法查询到该数据。因为之前很少用id这个关键字去进行数据库操作,因此没有注意到这个问题。

补充:
数据库随机生成id的两种方式:
1、随机生成uuid(uuid是根据时间戳来生成的)
2、auto_increment属性生成id

故障的大致情形如下图:
在这里插入图片描述

解决方法:

需要开发修改接口代码,修改insert语句的插入方式,将主库随机生成的id直接insert到从库,从库不再单独生成id。问题就解决了。

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

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

相关文章

亚马逊测评怎么做?

亚马逊作为全球最大的跨境电商公司,吸引了很多的中国卖家入驻,行业的内卷也是越来越严重,很多做过国内电商的都知道测评可以提高产品权重,快速提升产品销量 而测评模式主要有两种: 真人测评 优点:老外手…

【嵌入式——QT】QT静态编译

【嵌入式——QT】QT静态编译 QT下载查看文档下载Visual Studio打开命令行模式编译添加QT到Qt Creator编译示例 QT下载 下载地址 进入目录,我这里选择的qt-everywhere-src-5.14.1.zip。 查看文档 解压压缩包打开源码,查看README文件,里面…

解决文字识别中误识别问题的秘籍

随着人工智能技术的不断发展,文字识别技术已经广泛应用于各个领域,如智能客服、智能家居、自动驾驶等。然而,在实际应用中,文字识别技术也面临着误识别的问题。误识别不仅会影响用户体验,还可能导致严重的后果。因此&a…

UE5 实现RPG游戏操作控制

在UE5以后,epic抛弃了之前的那一套操作输入系统,使用了一套新的增强输入作为替代,目的主要是解决经常切换操作时的问题(操作人物上车以后,可以直接切换成操作汽车的一套输入)接下来,将实现如何使…

双目测距工程Stereo-Vision-master学习笔记

硬件: 首先要要把两个摄像头固定到支架上,并且两个摄像头的间距应该在110mm,两个摄像头没有落差 相机的内参数包括焦距、主点坐标、像素尺寸等,这些参数决定了相机成像的几何变换关系。内参数是相机固有的属性,不会随…

RK3568驱动指南|第十二篇 GPIO子系统-第128章 GPIO入门实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

【期末考试】网络综合复习宝典

相关链接 网络复习思维导图(HCIP)https://www.edrawsoft.cn/viewer/public/s/038e2370897928 详述循环冗余校验CRC码https://blog.csdn.net/liht_1634/article/details/124328005?app_version6.2.6&codeapp_1562916241&csdn_share_tail%7B%22…

用通俗易懂的方式讲解:十分钟读懂 Stable Diffusion 运行原理

AIGC 热潮正猛烈地席卷开来,可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度,特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性,也在逐渐改变一部分行业的生产模式。惊艳其出色表现,也不禁好…

windows server 2012、2019服务器定时重启

手动设置定时任务 1.开始菜单,找到“计划任务程序”; 如果无法创建基本任务的话,可能是系统中的“Task Scheduler”服务没有启动,你可在运行中键入“ services.msc”,查看“Task Scheduler”服务是否被设置成了“已禁用”&#x…

2024 年 8 款最好的PDF阅读和编辑软件

写出好的内容本身就是一门艺术。写作中的错误会让你看起来粗心大意或无能为力——这两种情况都不利于你的职业形象。没有任何软件能够取代现实生活中可以指出您写作错误的编辑器。幸运的是,有些软件已经接近并仍在改进它们的服务以帮助您清理工作。 编辑PDF很昂贵&…

k8s集群配置NodeLocal DNSCache

一、简介 当集群规模较大时,运行的服务非常多,服务之间的频繁进行大量域名解析,CoreDNS将会承受更大的压力,可能会导致如下影响: 延迟增加:有限的coredns服务在解析大量的域名时,会导致解析结果…

【Maven】002-Maven 安装和配置

【Maven】002-Maven 安装和配置 文章目录 【Maven】002-Maven 安装和配置一、官网1、官网2、历史版本列表 二、下载 Maven 3.8.8 版本1、进入 Maven 3.8.8 版本发行说明页2、进入下载页3、下载4、下载得到 apache-maven-3.8.8-bin.zip 三、Maven 安装1、将安装包解压到想放置的…

牛客周赛 Round 1 解题报告 | 珂学家 | 分类计数 + 同余DP

前言 生于生时,亡于亡刻。遵从自心,尽人之事。 整体评价 终于等来了侧重面试的比赛,而且题量刚刚好,不超纲,不涉及算法竞赛。 第一场的比赛,感觉题目出的比较典,A是简单模拟,B则是…

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数 PK_ENTITY_t entity; PK_CLASS_t PK_TYPE; PK_ENTITY_ask_class(e…

玩转Mysql 六(MySQL数据存储结构)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 一、MySQL数据存储结构解析 1、mysql数据存储结构的组成 ​ 从 InnoDB 逻辑存储结构来看&a…

HandlerInterceptor拦截器 postHandle执行addHeader无效,postHandle执行setStatus无效的解决方案

问题描述 想在postHandle方法里执行addHeader方法来补充一些Header信息(如分页信息),但是最后执行却未如期显示 拦截器源码 import com.zhangziwa.practisesvr.utils.response.ResponseContext; import jakarta.servlet.http.HttpServletR…

【降龙算法】基于QT插件机制实现一个机器视觉算法小框架

机器视觉行业有各种各样的拖拉拽框架,也叫做低代码平台,例如国内海康的VisionMaster: 一个机器视觉框架需要包含各种算法模块,日志窗口,图像显示窗口等等,【降龙算法】就是做了一个入门级的机器视觉算法框…

What does `HandlerInterceptor` do?

HandlerInterceptor 是 SpringMVC 中的一个接口&#xff0c;在SpringMVC应用中它提供了一种实现应用级拦截器的机制。 第1步&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

自动化测试框架pytest系列之8个常用的装饰器函数

自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 自动化测试框架pytest系列之21个命令行参数介绍(二)-CSDN博客 自动化测试框架pytest系列之强大的fixture功能&#xff0c;为什么fixture强大&#xff1f;一文拆解它的功能参数。(三)-CSDN博客 接上文 3.5 pytest的8…

当一堆数据差异过大如何选?

我们通过采样获得一对数组&#xff0c;但是他们差异过大&#xff0c;所以我们选择进行一次滤除。 先看基本概念&#xff1a; 移动平均&#xff08;Moving Average&#xff09;&#xff1a; 计算每个数据点及其相邻数据点的平均值&#xff0c;可以使用不同的窗口大小。这有助于…