Redis的主从同步

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis的主从同步流程

1.     配置主节点(Master):在主节点的redis.conf配置文件中,设置参数bind和port,指定主节点的IP地址和端口号。

2.     配置从节点(Slave):在从节点的redis.conf配置文件中,设置参数bind和port,指定从节点的IP地址和端口号。同时,设置参数slaveof,在该参数后指定主节点的IP地址和端口号,告诉从节点要连接的主节点信息。使用命令slaveof <masterip> <masterport>或在配置文件中设置replicaof <masterip> <masterport>,将从节点连接到主节点。

3.     启动主节点和从节点:先启动主节点,然后启动从节点。从节点连接到主节点后,开始进行主从同步。如果是第一次连接会发送SYNC命令,请求进行全量同步。

4.     全量同步(Full synchronization):从节点连接到主节点后,会发送SYNC命令,请求进行全量同步。主节点收到SYNC命令后,会执行BGSAVE命令创建RDB快照文件,并通过内部缓冲区记录所有写操作。一旦主节点完成BGSAVE操作,会将RDB快照文件发送给从节点,并将缓冲区中的写操作发送给从节点。从节点接收到RDB快照文件后,加载数据到内存中,然后将缓冲区中的写操作依次执行,使得从节点与主节点的数据保持一致。

5.     增量同步(Incremental synchronization):全量同步完成后,主节点会将每个写操作都发送给从节点,使得从节点能够持续更新自己的数据,与主节点保持同步。主节点将写操作发送给从节点的方式有两种:同步传输(Sync)和异步传输(Async)。在同步传输模式下,主节点执行写操作后会等待所有从节点的确认,然后才认为写操作完成;而在异步传输模式下,主节点执行写操作后立即返回,不等待从节点的确认。

6.    命令传播(Command Propagation):主节点将每个写命令通过网络发送给从节点。从节点接收到写命令后,会执行该命令,并将结果返回给主节点。主节点会根据从节点的回复确定是否需要重发该命令。

7.     故障恢复:如果主节点发生故障,从节点可以自动选择新的主节点,并成为新的主节点的从节点。当旧主节点恢复后,可以作为新的从节点连接到新的主节点上。

8.   断线重连:如果从节点与主节点的连接中断,从节点会尝试重新连接主节点。一旦重新连接成功,从节点会根据主节点的复制偏移量(replication offset)请求增量同步。

通过主从同步,Redis实现了数据的复制和高可用性。主节点负责处理写请求,而从节点则负责处理读请求,提高了系统的并发能力和容错性,提升整个系统的可靠性和性能。

值得注意的是,Redis主从同步是异步的,从节点可能存在一定的数据延迟。此外,在Redis 6.0及更高版本中,还提供了PSYNC命令和增量复制功能,进一步改进了主从同步的性能和可靠性。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
4月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
5月前
|
缓存 运维 NoSQL
Redis主从模式部署
Redis主从模式部署
65 4
|
5月前
|
缓存 NoSQL Redis
Redis主从架构
当看到图示中红色标记的,就代表从节点挂载成功了。
38 0
|
2月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
199 2
|
5月前
|
NoSQL Java 关系型数据库
考考你Redis主从,就知道有没深入Redis
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天继续给大家带来新的一篇Java进阶指南。如果是单机版的数据库,像MySQL、Redis,看起来实现并不复杂。只要支持保存一条数据,同时要能够查询出来。但如果是多机版的数据库呢,各个节点的配合联调是比较复杂的过程,看起来就不是那么简单喽。要考你对Redis深不深入理解,问问Redis多机版相关的问题就知道了。我们今天就来指南下Redis主从架构。
考考你Redis主从,就知道有没深入Redis
|
4月前
|
监控 NoSQL Ubuntu
|
5月前
|
消息中间件 NoSQL Linux
详解Redis的主从同步原理
只不过在主节点中叫做master_repl_offset; 从节点也有一个偏移量叫做slave_repl_offset,用来记录从节点已经从主节点的repl_backlog_buffer中同步到的最新写指令的位置;
1196 2
|
4月前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
|
6月前
|
存储 缓存 NoSQL
Redis与数据库同步指南:订阅Binlog实现数据一致性
本文由开发者小米分享,探讨分布式系统中的一致性问题,尤其是数据库和Redis一致性。文章介绍了全量缓存策略的优势,如高效读取和稳定性,但也指出其一致性挑战。为解决此问题,提出了通过订阅数据库的Binlog实现数据同步的方法,详细解释了工作原理和步骤,并分析了优缺点。此外,还提到了异步校准方案作为补充,以进一步保证数据一致性。最后,提醒在实际线上环境中需注意日志记录、逐步优化和监控报警。
349 3