Redis学习笔记--主从复制
主从复制
是什么?
主从复制是一种数据同步机制(Master-Slave Replication)将主节点的数据实时同步到多个从节点中,主节点可读可写,但在实际工作中主节点只负责写操作。从节点默认只读,用于分摊读请求和数据备份。主从是无法保证高可用的。
主从模式下,主节点故障,从节点只能保持不动,从节点数据可以正常读取,但无法从主节点获取新的写数据,只能等待主节点上线。所以这是主从最大的弊端,后续可以通过哨兵集群来实现高可用,提高系统的稳定性。
能干嘛?
1、数据备份:从节点作为主节点的副本可以持久化或导出数据,防止单点故障导致数据丢失,不影响主节点的性能。
2、读写分离:主节点负责写请求,从节点负责读请求,分摊读写压力,提高并发性能。
3、水平扩容支持高并发:
优缺点:
优点:
1、性能提升:读写分离可以降低主节点的压力。
2、数据安全:从节点备份主节点数据,防止数据丢失。
缺点:
1、数据延迟:数据同步时会导致从节点短暂的数据不一致(秒级)。
2、主节点单点故障:写压力集中在主节点,单点故障后无法选举新的主节点,从节点只能傻傻的等待。
3、全量同步消耗大:大量数据同步时,生成和传输RDB可能导致主节点短暂故障
级联复制:
从节点也可以作为其它从节点的主节点,行程树形结构,减轻主节点压力。
常用命令:
1、info replication:查看主从状态
2、slaveof no one:停止当前节点与其它节点的数据同步,转为主节点
工作原理:
1、全量同步:从节点首次连接主节点时,主节点生成RDB快照文件发送给从节点,完成后继续增量同步数据。
2、部分同步:断线重连后,主节点仅发送断线期间的增量命令。
3、命令传播:主节点完成写命令后,异步发送给所有从节点,通知他们更新数据。
工作流程:
1、建立连接:
1.1、从节点在配置文件中配置主节点的ip、端口、密码。
1.2、从节点向主节点发送连接请求,并携带复制ID和偏移量信息告知主节点。
2、数据同步:
2.1、首次同步:主节点生成RDB文件异步发送给从节点,从节点清空旧数据,加载RDB中的数据,后续主节点将复制缓冲区中的增量命令发送给从节点。
2.2、断线重连:主节点发送复制缓冲区中的缺失命令给从节点,从节点根据偏移量重建增量数据。
3、命令传播:
主节点每执行一个写命令都异步的将命令发送给所有从节点,从节点执行后保持数据一致。
4、心跳监测:
主从节点通过定期发送REPLCONF ACK确认连接状态和复制偏移量。
复制缓冲区:
位于主节点内部,主节点用来维护固定大小的缓冲区,存储最近执行过的写命令。缓冲区溢出后会进行全量同步。
复制ID和偏移量:
复制ID是用于标识是哪个从节点,偏移量是指数据复制到了哪里。它们合起来用于标识数据同步进度。
断线重连后,从节点携带复制ID和偏移量请求主节点,触发缺失数据同步。

浙公网安备 33010602011771号