Redis的数据实现主从同步的机制

【Redis】什么是高可用?redis为何高可用? 文章目录前言什么是高可用?Redis为何高可用?1、哨兵机制**当一个Sentinel启动时, 它需要执行以下步骤:**哨兵对节点的三项监控(1)info命令:(2)向 __sentinel__:hello 频道同步信息(3)向数据节点做心跳探测主观下线客观下线选举领头Sentinel故障转移(1)新的主服务器选举规则(2)选举之后,让其他从服务器服从主服务器(3)将旧的主服务器变为从服务器**哨兵的核心知识**2、数据库的主从复制部分复制(1)偏移量(2)复制积压缓冲区(3)服务器运行ID 前言 什么是高 阅读详情

一 概述

在Redis主从同步中,一般只有一个Master进行数据的写操作,而会有多个slave进行读操作,定期的数据备份也是通过一个单独的slave进行实现,使得Redis的性能能够最大程度发挥出来,为了支持数据的弱一致性和最终一致性,我们并不需要保证Master与Slave之间的数据是实时同步,但是在一段时间后它们保存的数据是趋于同步的,从而满足最终一致性。

二 Redis主从同步的机制

第一次同步到时候,主节点(Master节点)会执行一次BGSAVA操作,并将后续的修改操作记录到内存的缓存中,待完成后,会将全量的RDB镜像文件同步到节点中,从节点接收到该镜像文件之后加载都内存中,加载完成后会发送消息通知主节点,将期间修改的操作,记录及增量数据同步到从节点,进行保存。也就是将某个时间点的全量数据同步完成后,再将该时间点之后的增量数据进行存放,进而实现整个同步的进程。

全同步:

从节点发送同步消息给主节点,此时Master节点启动一个后台进程,将Redis中的数据快照保存到文件中,即BGSAVE操作及数据同步命令。

在启动后台进程的同时,Master节点会将保存数据快照期间接收到的写命令缓存起来,即将增量数据缓存起来,当Master节点完成写文件操作后,将该文件发送给Slave节点,Slave结点接收到文件之后就会将文件保存到磁盘中,然后加载文件到内存中,去恢复数据快照,当Slave完成数据快照恢复之后,master就会将这期间收集的增量命令发送给salve进行回放。进而完成全量同步,当完成全量同步的之后,所有的读操作会在Slave上执行,所有的写操作会在Master上执行。

当然,Master也可以实现读操作,但是为了性能更好,所以将读操作都放在Salve上,因此用户的写操作需要及时的扩散到所有的Slave上,以便保持主从数据最大量的同步,Redis的Master与Slave经常进行更新操作,包括写,删除和更改操作,及时将这些数据变化进行同步。

增量同步:

Redis的主从进程在正常运行期间,增量同步方式为Master接收到用户的操作指令,会执行相应的操作函数,判断操作是否需要扩散到各个Slave,如果需要就会进行下一个步骤,当涉及到增删改就需要及时扩散到Slave,查就可以不进行相关操作,另外需要将操作记录追加到AOF文件上,并将操作扩散到其他Slave中,此是需要注意以下几点:

  1. 对齐主从数据库,确保从数据库是该操作对应的数据库。
  2. 检查无误后,将命令和参数按照Redis的协议格式,写入响应Slave的Master缓存中。
  3. 最后将Master缓存中的这些数据发送给Slave结点。

三 主从模式的弊端与哨兵模式的优点

主从模式的弊端为:不具备高可用性,当Master挂掉之后无法对提供写入操作。

此时,需要使用Redis Sentinel(Redis 哨兵,Redis官方提供的主从管理工具)解决主从同步Master宕机后的主从切换问题,其实Redis Sentinel也是一个独立运行的进程,他能监控多个master-slave,发现master宕机之后,能进行自动切换。

Redis Sentinel主要实现了以下功能:

监控:sentinel会不断的检查主服务器和从服务器是否能够正常运行。

提醒:当被监控的某个Redis服务器出现问题时,sentinel会通过API向管理员或者时其他应用程序发送故障通知,使得操作人员能够及时的了解到相关的故障。

自动故障迁移:当一个主服务器无法正常工作的时候,sentinel会自动进行一次故障迁移操作,它会将失效的主服务器的一个从服务器升级为Master,并让其他的Slave服务器改为复制新的master,即让之前的Slave结点识别新的Master结点,并实现主从同步,当客户端尝试连接失效的主服务器时,集群会自动返回新的主服务器地址,使得集群使用新的master代替新的Master。

Redis Sentinel是分布式的,我们可以在一个架构中运行多个Sentinel进程,这些进程遵循(留言协议)gossip protocol来接收主服务器是否下线的信息,并使用(自动投票协议)agreement protocol来决定是否进行自动故障迁移,以及选择哪个从服务器作为新的主服务器,有点类似于Zookeeper。

redis主从同步是如何同步数据的? Redis 主从同步通过全量同步、增量同步和命令传播实现数据一致性,确保从节点与主节点数据实时同步。 阅读详情

相关推荐

基于canal实现mysql(mariadb)与redis的主从同步

    在数据需要频繁的使用场景之下,使用redis获取数据可以大大提高软件使用效率,如何实现mysql等关系型数据库和redis数据实时同步显得尤为关键,实现数据同步的方式有以下几种:    1. 代码的方式控制,但是这种方式缺点是需要写入数据库的同时,也要向redis中写数,造成代码冗余和业务领域编程人员无法专注与业务逻辑。    2. 配置mybatis拦截器,逻辑上是可行的,但是要考虑到只...

weixin_40606441的博客 3748

Redis主从模式以及数据同步原理:全量数据同步、增量数据同步

Redis主从模式以及数据同步原理:全量数据同步、增量数据同步一、主从复制二、数据同步1、全量数据同步2、增量数据同步3、服务器 RUN ID4、复制偏移量 offset5、环形缓冲区三、何时使用全量还是增量数据同步 Redis有三种集群模式,分别是:主从模式、哨兵模式、Cluster模式 主从模式是三种模式中最简单的,在主从复制中分为主数据库(master)和从数据库(slave),若master出现宕机,需要手动配置slave转为master。 后来为了高可用提出来哨兵模式,可以选择出slave转为ma

菊头蝙蝠的博客 3112

RabbitMQ的使用(JAVA)

Java快速上手的MQ上线!

.............. 1万+

redis集群-主从同步、哨兵模式、Cluster 集群

集群的三种模式: 一、主从同步/复制 redis有俩种复制模式:Rdb和aof redis持久化问题;会有数据损失吗,开启aof的持久化吗; redis提供2种持久化方案。rdb和aof redis有自己默认的持久化方案 (Rdb 方案) Rdb(默认):在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之...

m0_37235955的博客 8635

银河麒麟V10安装docker

最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1

m0_38004228的博客 4908

RISC-V IP中的ITCM/DTCM与Slave-AHB接口设计解析

本文深入解析RISC-V IP中ITCM/DTCM与Slave-AHB接口的设计要点,涵盖TCM架构原理、总线协议实现及性能优化策略。通过实际案例展示如何实现单周期访问延迟,解决跨时钟域同步等关键问题,为嵌入式系统提供确定性内存访问方案。特别探讨了AHB总线仲裁机制和RTL实现技巧,助力开发者构建高效可靠的RISC-V处理器子系统。

weixin_28419039的博客 530

Redis数据同步机制

哨兵模式可以自动检测主节点的状态,当主节点发生故障时,会自动将一个从节点切换为主节点。切换过程中,从节点会先将自己的数据与主节点保持一致,然后才能成为新的主节点。它的原理是将主节点的数据复制到从节点,使得从节点的数据与主节点保持一致。需要注意的是,主从复制是异步的,从节点与主节点的数据不是实时同步的。2)主节点在接收到SYNC命令后,开始执行BGSAVE命令,将数据持久化到磁盘中,并将生成的RDB文件发送给从节点。4)从节点开始接收主节点的增量数据,并将其应用到自己的数据集中,保持与主节点的同步。

lonely_baby的博客 3384

FineBI制作数据可视化大屏-数据连接(1)

快速上手大屏可视化,FineBI数据连接配置。

Pangaoyang_的博客 1915

Redis的数据同步

在一台机器上运行2个及以上的redis,是redis支持多实例的功能,基于端口号的不同,就能够运行多个相互独立的redis数据库,当我们的一个redis服务挂掉之后,另外一个可以马上接管,继续提供服务,也就是一主多从的关系,下面来介绍一下,如何来搭建 什么是多实例? 就是机器上运行了多个redis相互独立的进程 互不干扰的独立的数据库 叫做多个redis数据库的实例,基于配置文件区分即可 1:准备好2个配置文件,分别写入如下内容 #第一个 [root@localhost etc]# vim s25-mas

前端小东 1675

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 940

Agisoft Metashape相机标定笔记

使用Metashape进行自动相机标定是可能的。(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。相机标定步骤支持全相机标定矩阵的估计,包含非线性的畸变参数。相机模型的细节请参照附录D——相机模型板块。:在通用的工作流程中,相机标定步骤可以跳过。因为Metashape会在图像定向过程中进行相机自标定。但是,如果定向结果不稳定,例如,由于影像之间缺乏连接点,额外进行单独的相机标定步骤也许是有用的。

天桥飞熊的博客 3981

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

本文介绍了MySQL数据库的事务隔离级别、主从复制实现的步骤以及Redis的读写分离技术、Redis读取速度那么快的原因。

独上高楼,望尽天涯路。 609

Flink SQL数据血缘实战:如何用Calcite追踪字段级数据流向(附源码示例)

本文深入探讨了如何利用Apache Calcite解析Flink SQL执行计划,实现字段级数据血缘的追踪。通过扩展Calcite的元数据处理器,特别是针对Flink特有的Snapshot等节点,文章提供了从获取优化后的逻辑计划到提取并可视化血缘关系的完整实战方案,并附有核心源码示例,帮助开发者构建实时数仓的数据治理能力。

weixin_29032337的博客 142

Redis

1、如果先删缓存,再写数据库: 在高并发场景下,当第一个线程删除了缓存,还没有来得及写数据库,第二个线程来读取数据,会发现缓存中的数据为空,那就会去读数据库中的数据(旧值,脏数据),读完之后,把读到的结果写入缓存(此时,第一个线程已经将新的值写到缓存里面了),这样缓存中的值就会被覆盖为修改前的脏数据。休眠时间,可能会多次重复,对性能有影响。解决方案:将热点数据缓存设置为永不过期,但是在value当中写入一个逻辑上的过期时间,另外起一个后台线程,扫描这些key,对于已逻辑上过期的缓存,进行删除。

qq_45859235的博客 981

LiveReload:释放你的F5,实时预览HTML效果

一、liveReload插件开发背景Web前端开发人员在写页面时,如果修改了HTML or CSS,要想看效果通常的做法就是保存代码就得 Alt+Tab,切换到浏览器(当然,我知道很多开发人员是双屏操作不一定需要切换到浏览器),但是一定要F5刷新才能看自己刚写的代码有没有效果,没有效果就再切换到编辑器下修改,然后再切换到浏览器F5刷新看效果,还没有效果,就再继续修改,如此反复。时间久了,前端自动化...

Char_n的博客 2510

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Redis主从同步以及Redis-Shake数据同步实战

项目在进行上云,原先redis是自建的,现需要对自建的redis中的数据迁移到云上的redis中,遂调研当前有哪些工具支持redis的全量部署数据的迁移和增量数据迁移。

stone_tmp的博客 1105

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis主从同步

Redis的主从同步是指在Redis中,一个Redis服务器(主服务器)可以与多个其他Redis服务器(从服务器)进行数据同步和复制的过程。主从同步有两个主要目的:数据冗余和备份:通过将主服务器的数据复制到多个从服务器,可以实现数据的冗余备份。如果主服务器发生故障或数据丢失,可以将其中一个从服务器升级为主服务器,确保系统的可用性和数据的安全性。读写分离:通过将主服务器用于写操作,而将从服务器用于读操作,可以将读负载分摊到多个从服务器上,从而提高系统的读性能。

Flying_Fish_roe的博客 1587

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Redis主从同步和哨兵

Redis主从同步,第一次同步的时候,会对数据进行全量同步,主库会把所有数据以RDB的形式发给从库,因为之后主库在更新数据后,都要把更新的数据发给从库,从库太多了的话就会让主线程频繁用fork,也会占用主库网络带宽,会减慢主库的速度,因此推出了主从从模式。如果主库故障,那么哨兵会执行主从切换,但是在此之前会先选出执行此操作的哨兵,会进行投票,必须到哨兵数量/2+1才可以进行主从切换,否则会休息一会重新选举。如果优先级一样,就会根据从主库那同步到的数据的多少来选,最后会从id小的从库当主库。

2301_77664120的博客 797

Redis 主从同步原理

主从同步,就是将数据冗余备份,主库(Master)将自己库中的数据,同步给从库(Slave)。主从同步的必要性,在于数据的高可用。它可以保证机器故障时,还有其他的服务器可以进行故障转移。

仁扬 635

Redis主从同步机制

Redis主从同步机制是一种分布式数据库架构设计,用于确保主数据库(Master)和从数据库(Slave)之间的数据一致性,从而实现数据冗余、负载均衡、故障转移等功能。(Full Resynchronization): 当一个新的从节点加入集群或者主从节点之间的连接断开重连时,从节点通常会发起全量同步。主节点执行bgsave生成RDB(Redis Database)文件,即Redis的持久化快照,然后将这个快照文件传输给从节点,从节点载入此快照,从而完成初始的数据同步。

0 1122

redis基于binlog的主从同步

1. 背景 上半年我们使用RocksDB做存储引擎,实施了Redis数据实时落地的项目,实现了在兼容redis协议的前提下,管理超出内存大小的数据集。 在主从同步方面,我们沿用了Redis原有的方案,该方案在实际运营中应对不良的网络状况显得很无力,因此我们在数据落地的基础上,为Redis开发了一套新的主从同步机制。 2. Redis原生同步方式 主从数据同步分一般两步走:同步已有的全量数据,和同步增量数据。同步的全量数据必须是master数据集的point-in-time的快照;增量数据则从快照完成

liqingbing12的专栏 2823

在Linux系统上搭建Redis集群,实现主从同步与哨兵机制

Redis 简介: Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。...

听风动的博客 1689

Redis -- 13 -- Redis主从同步搭建

官方文档:Replication Redis 主从同步是指将一台 Redis 服务器上的数据,同步到另一台或多台 Redis 服务器上,前者称为主节点 (Master),后者称为从节点 (Slave);一个主节点可以有多个从节点 (也可以没有),而一个从节点只能有一个主节点 一、Redis 主从同步介绍 Redis 默认使用异步复制,其特点是低延迟和高性能,是绝大多数 Redis 实例的自然复制模式,也就是说 Slave 会异步地确认从 Master 周期性接收到的数据 主从同步的运行依靠以.

半日橙 675

redis 主从同步配置

参考:https://blog.youkuaiyun.com/github_26672553/article/details/69568259这个基本已经写清晰了,不过还是有所欠缺:slaveof x.x.x.x 6379masterauth masterPwd masterauth命令:设置主库密码redis主从同步方式和mysql不同,mysql主从数据库都需要配置,而redis只需要配置从库,从库配置之...

liujihaozhy的专栏 387

Redis主从同步流程

主从同步流程(全量) slave与master建立socket连接; slave向master发送PSYNC命令请求复制数据(无论slave是否为第一次连接); master收到PSYNC命令后,会在后台进行数据持久化; 通过bgsave生成最新的rdb快照文件 bgsave期间,将客户端发送的命令(会修改数据集的)缓存到内存中; 持久化完毕后,master将这份RDB数据发送给slave; slave会把接收到的数据进行持久化生成RDB,然后再加载到内存中。 master继续将之前缓存在内存中的命

seolin的博客 1132
上一篇: Redis实现集群的原理
下一篇: Redis持久化方案之AOF
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值