分布式-redis主从复制架构

文章目录

是什么

主从复制是redis最简单的集群模式,主要是为了解决单点故障问题 ,所以将数据复制多个副本到从节点中,这样即使有一台服务器宕机,其他服务仍可提供服务。主从模式中,包含一个主节点(Master)和多个从节点(Slave),一般主节点负责读写操作,从节点负责读操作,当主节点发生故障,将一个从节点升级为主节点,实现故障转移(需要人工手动操作)。

优点:简单易用,适用于读多写少的场景

缺点:

  1. 不具备故障自动转移的能力,没有办法做容错和恢复
  2. 只有主节点进行写操作,无法负载均衡
  3. 存储能力受到单机限制
java 复制代码
// 主从数据库数据同步过程
1.全量复制:【当主从服务器刚建立连接的时候,进行全量数据同步】
	a、首先从服务器连接到主服务器,发送psync命令进行数据全量同步(Redis2.8之前是sync命令)
	b、主服务器收到psync命令之后,执行bgsave命令生成RDB快照文件发送给从服务器
	c、从服务器收到RDB快照文件后,清空内存旧数据,将接收到的数据写入磁盘

2、增量复制:【全量复制结束后,进行增量复制】
	a、主服务器每执行一个写命令就会向从服务器发送相同的写命令
	b、从服务器接收并执行收到的写命令。

优点:
  (1)数据热备份:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  (2)故障恢复:  如果master宕掉了,可以手动提升一个新的master,实现故障转移。
  (3)负载均衡:  可以轻易实现横向扩展,实现读写分离,一个master用于写,多个slave 用于分摊读的压力
  
缺点:
  (1)网络延迟:由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以有一定的延迟
  (2)如果master宕掉了,普通主从模式无法自动切换master,必须使用哨兵模式

常见架构

总体来说,主数据库Master以写为主,从数据库Slave以读为主,整体负责读写分离、容灾恢复。

case1:一主二仆【中心化架构】 slaveof 新主库IP 新主库端口

case2:薪火相传【去中心化架构】 slaveof 新主库IP 新主库端口

case3:反客为主 slaveof no one

一主二仆【中心化架构,为主】

master主机日志

slave从机日志

常见问题

1、slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制?

答:从头开始复制;123也可以复制

2、从机是否可以写?set可否?

答:从机不可写,不可set,主机可写

3、主机shutdown后情况如何?从机是上位还是原地待命

答:从机还是原地待命(咸鱼翻身,还是咸鱼)

4、主机又回来了后,主机新增记录,从机还能否顺利复制?

答:能

5、其中一台从机down后情况如何?依照原有它能跟上大部队吗?

答**:不能跟上,每次与master断开之后,都需要重新连接**,除非你配置进redis.conf文件(具体位置:redis.conf搜寻#### REPLICATION ####)

薪火相传【去中心化架构】

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力(奴隶的奴隶还是奴隶),中途变更转向会清除之前的数据,重新建立拷贝最新的

slaveof 新主库IP 新主库端口

case3:反客为主

使当前数据库停止与其他数据库的同步,转成主数据库,形成一个中心点

SLAVEOF no one

相关推荐
Devin~Y13 小时前
互联网大厂 Java 面试实录:JVM、Spring Boot、MyBatis、Redis、Kafka、Spring AI、K8s 全链路追问小Y
java·jvm·spring boot·redis·kafka·mybatis·spring security
摇滚侠13 小时前
SpringCloud 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·spring·spring cloud
tongluowan00714 小时前
Java 内存模型(JMM)- happens-before 与内存屏障
java·内存模型·happens-before
plainGeekDev14 小时前
Android Framework 面试题:Binder都说不清楚,简历别写精通了
android·java
闵孚龙14 小时前
Claude Code 不足复盘与容错架构全解析:AI Agent 架构优化、上下文工程、缓存稳定性、LSP 语义搜索、Feature Flag 治理
人工智能·缓存·架构
Gauss松鼠会14 小时前
【GaussDB】基于SpringBoot实现操作GaussDB(DWS)的项目实战
java·数据库·经验分享·spring boot·后端·sql·gaussdb
難釋懷14 小时前
Redis内存回收-内存淘汰策略
前端·数据库·redis
weixin_4083180414 小时前
企业级直播平台技术选型与成本分析:三种方案架构对比
微服务·云原生·架构
Gauss松鼠会14 小时前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
xiaogg367814 小时前
k8s 部署yaml文件和Dockerfile文件配置
java·docker·kubernetes