我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis 数据库主从不一致问题解决方案

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis 数据库主从不一致问题解决方案

 在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。

 

问:常见的数据库集群架构如何?

答:一主多从,主从同步,读写分离。

如上图:

(1)一个主库提供写服务

(2)多个从库提供读服务,可以增加从库提升读性能

(3)主从之间同步数据

画外音:任何方案不要忘了本心,加从库的本心,是提升读性能。

 

问:为什么会出现不一致?

答:主从同步有时延,这个时延期间读从库,可能读到不一致的数据。

如上图:

(1)服务发起了一个写请求

(2)服务又发起了一个读请求,此时同步未完成,读到一个不一致的脏数据

(3)数据库主从同步最后才完成

画外音:任何数据冗余,必将引发一致性问题。

 

问:如何避免这种主从延时导致的不一致?

答:常见的方法有这么几种。

 

方案一:忽略

任何脱离业务的架构设计都是耍流氓,绝大部分业务,例如:百度搜索,淘宝订单,QQ消息,58帖子都允许短时间不一致。

画外音:如果业务能接受,最推崇此法。

 

如果业务能够接受,别把系统架构搞得太复杂。

 

方案二:强制读主

如上图:

(1)使用一个高可用主库提供数据库服务

(2)读和写都落到主库上

(3)采用缓存来提升系统读性能

这是很常见的微服务架构,可以避免数据库主从一致性问题。

 

方案三:选择性读主

强制读主过于粗暴,毕竟只有少量写请求,很短时间,可能读取到脏数据。

 

有没有可能实现,只有这一段时间,可能读到从库脏数据的读请求读主,平时读从呢?

 

可以利用一个缓存记录必须读主的数据。

如上图,当写请求发生时:

(1)写主库

(2)将哪个库,哪个表,哪个主键三个信息拼装一个key设置到cache里,这条记录的超时时间,设置为“主从同步时延”

画外音:key的格式为“db:table:PK”,假设主从延时为1s,这个key的cache超时时间也为1s。

 

如上图,当读请求发生时:

这是要读哪个库,哪个表,哪个主键的数据呢,也将这三个信息拼装一个key,到cache里去查询,如果,

(1)cache里有这个key,说明1s内刚发生过写请求,数据库主从同步可能还没有完成,此时就应该去主库查询

(2)cache里没有这个key,说明最近没有发生过写请求,此时就可以去从库查询

以此,保证读到的一定不是不一致的脏数据。

 

总结

数据库主库和从库不一致,常见有这么几种优化方案:

(1)业务可以接受,系统不优化

(2)强制读主,高可用主库,用缓存提高读性能

(3)在cache里记录哪些记录发生过写请求,来路由读主还是读从

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis 数据库主从不一致问题解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis 数据库主从不一致问题解决方案

在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。 问:常见的数据库集群架构如何?答:一主多从,主从同步,读写分离。如上图:(1)一个主库提供写服务(2)多个从库提供读服务,可以增加从库提升读性能(3)主从之间同步数据画外音:任何方案不要忘了
redis 数据库主从不一致问题解决方案
2020-05-07

redis主从数据不一致问题如何解决

使用Redis的复制(Replication)功能来保证数据一致性。可以将主节点写入的数据同步到从节点,确保从节点的数据与主节点保持一致。定期检查主从节点的同步状态,及时发现数据不一致的情况并进行修复。在数据不一致的情况下,可以通过重新同步
redis主从数据不一致问题如何解决
2024-04-09

redis主从数据不一致怎么解决

要解决Redis主从数据不一致的问题,可以采取以下措施:1. 检查网络连接:确保主从服务器之间的网络连接稳定,并且没有丢包或延迟过高的情况。2. 检查配置文件:检查主从服务器的配置文件,确保配置正确且一致。3. 同步过程监控:监控主从服务器
2023-08-20

redis数据库一致性问题解决

redis数据库通过以下机制解决数据一致性问题:主从复制:主服务器将写操作同步复制到从服务器。redis sentinel:监控redis服务器并执行故障转移和故障恢复,保持数据库可用性和数据一致性。redis cluster:使用一致性哈
redis数据库一致性问题解决
2024-04-19

Mysql和redis缓存不一致问题的解决方案

目录一.问题描述二.解决方案1.给缓存数据设置过期时间2.缓存延时双删3.删除缓存重试机制4.读取biglog异步删除缓存三.总结一.问题描述Redis、mysql双写缓存不一致:在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓
2022-08-16

MySQL主从数据不一致怎么解决

MySQL主从数据不一致的解决方法可以分为以下几个步骤:检查主从同步状态:可以通过查看主从服务器的状态信息来确认同步是否正常。可以使用SHOW SLAVE STATUS命令来查看从服务器的状态信息,包括主从同步是否正常、延迟情况等。检查主从
2023-10-27

mysql怎么解决主从数据不一致

解决 mysql 主从数据不一致问题的方法包括:检查并修复二进制和中继日志;重置从服务器;克隆数据;使用 mysql replication fix 库;保证版本一致、检查网络连接、避免大规模数据修改、定期监控复制进程。MySQL 主从数据
mysql怎么解决主从数据不一致
2024-05-30

由数据迁移至MongoDB导致的数据不一致问题及解决方案

##故事背景###企业现状2019年年初,我接到了一个神秘电话,电话那头竟然准确的说出了我的昵称:上海小胖。我想这事情不简单,就回了句:您好,我是小胖,请问您是?“我就是刚刚加了你微信的 xxx 啊”哦……他只是把我的微信昵称报出来了……随着深入沟通,了解到对
由数据迁移至MongoDB导致的数据不一致问题及解决方案
2021-02-24

redis缓存和数据库不一致解决

解决 redis 缓存和数据库不一致问题需要:使用数据一致性协议(如 redis 事务或分布式锁)防止并发写入导致不一致。采用缓存失效策略(如过期时间或更新触发器)确保缓存及时更新。优化缓存架构(如分区缓存或二级缓存)减少对数据库的直接访问
redis缓存和数据库不一致解决
2024-04-19

redis和数据库数据不一致怎么解决

redis和数据库数据不一致的解决方法有:开启redis持久化;使用事务或锁;定期同步数据;使用缓存失效策略;使用主从复制;定期检查和修复。Redis和数据库数据不一致的解决方法Redis是一种内存数据库,其优势在于速度快、性能高。但由于
redis和数据库数据不一致怎么解决
2024-04-08

redis和数据库数据不一致如何解决

解决redis和数据库数据不一致的问题通常需要进行同步更新操作。以下是一些解决方法:使用缓存失效策略:在更新数据库数据时,同时更新缓存数据,并设置缓存的失效时间,确保缓存数据能够及时更新。双写一致性:在更新数据库数据时,同时更新缓存数据,确
redis和数据库数据不一致如何解决
2024-04-22

Redis缓存和数据库的数据一致性的问题解决

目录前言一、谈谈一致性二、 情景分析2.1 针对读场景2.2 针对写场景三、同步策略3.1 先更新缓存,再更新数据库3.2 先更新数据库,再更新缓存3.3 先删除缓存,后更新数据库3.4 先更新数据库,后删除缓存四、解决办法4.1 双写一致
Redis缓存和数据库的数据一致性的问题解决
2024-09-20

redis缓存和数据库一致性问题如何解决

在使用Redis缓存时,常常会遇到与数据库一致性的问题。当数据发生变更时,需要保证Redis缓存与数据库的数据保持一致。以下是几种常见的解决方案:1. 缓存穿透:在查询缓存时,如果缓存中不存在对应的数据,会直接查询数据库。但是当数据库中也不
2023-08-24

redis系列之数据库与缓存数据一致性解决方案

场景一一般来说,只要你用到了缓存,不管是Redis还是memcache,就可能会涉及到数据库缓存与数据的一致性问题,这里我们以Redis为例。我们该如何保证Redis与数据库的一致性呢? So easy:更新的时候,先更新数据库,然后再删除缓存。读的时候,先读
redis系列之数据库与缓存数据一致性解决方案
2020-08-13

oracle主备库数据不一致如何解决

要解决Oracle主备库数据不一致的问题,可以采取以下措施:1. 检查网络连接:确保主备库之间的网络连接正常,没有延迟或丢包等问题。2. 检查主备库配置:确认主备库的配置是否正确,包括日志传输模式、归档模式等。3. 检查归档日志传输:检查主
2023-09-25

编程热搜

目录