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

优点:简单易用,适用于读多写少的场景
缺点:
- 不具备故障自动转移的能力,没有办法做容错和恢复
- 只有主节点进行写操作,无法负载均衡
- 存储能力受到单机限制
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