记一次线上数据库更新异常事件

本文记录了一次因第三方组件数据库返回数据错误导致平台数据库误更新的问题排查过程。通过监控和对比,发现数据库主从复制延迟是导致数据不一致的根本原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

背景 

排查思路


背景 

上线时,发现第三方组件数据库返回的数据存在错误,导致平台数据库误更新。

接下来一顿操作猛如虎,根据调用接口的返回值 直接撸代码查找线索。查找完之后,返现数据库更新的时间线索完全能够对的上,没有问题呀。第三方组件数据库更新是正常的,为什么调用时会返回数据不正确!懵逼了。

小白选手,数据库仅仅停留在最基本的CRUD,数据库架构设计及性能方面很茫然!

排查思路

1. 数据库有没有cache 缓存。     代码确认没有 缓存。

2. 数据库在时间段产生主备切换。

咨询专门做数据库开发的同事

分两次插入数据,第一次插入五条,数据库返回成功后,调用接口查出来是5条。过了一会插入2条数据,数据库成功后,调用接口查询还是5条,重试就变成了7条。数据库的结果是7条数据,create的时间点和api也是吻合的。

第一种情况:主从有延迟的情况下,默认查询的是从库的,导致查询的数据不一致。
第二种情况:主从没有延迟的情况下,insert的事务,没有提交commit,然后发起了查询。

insert的操作是 操作的主库,select查询的操作 没有指定hint的话,默认查询的是从库。

通过监控查到时间点是吻合的,数据库主从延迟,导致select查询从库的时候,没有读到正确的数据。

通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。

参考博文:https://www.cnblogs.com/cnmenglang/p/6393769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值