目录
主从复制
作用:读写分离(写主--读从),提高并发性,高可用
复制过程:
- 主生成自己当前的RDB文件,并开启一个子线程记录生成期间处理的指令
- 主发送RDB给从,从复制主
- 主发送记录生成期间处理的指令给从,从完成复制,主从一致
指令传播:主将写命令传播给所有的从,以便主从一致
部分重复制 解决连接断开后不必要的重复制
- 主从连接断开后,从发现不一致,进行重复制
- 主从双方分别维护一个偏移量,分别表示主发送的字节数,从接收的字节数
- 主维护一个最近发出的字节列表及对应的偏移量,若从缺的那部分还在列表,则发送给从,不需要执行完整的复制
- 否则执行完整复制
哨兵模式
- 目的:解决主从复制模式下主宕机的问题
- 方法:哨兵系统监控主和从,主挂了后,选一个从作为新的主替换掉
- 如何判断主 下线?
- 主观下线 哨兵通过配置建立与主的命令连接,通过PING判断是否在线,在一定持续时间内主无效回复,则认为主 主观下线
- 客观下线 哨兵认为主观下线后,询问其他哨兵,若收到足够多回复认为主下线,则认为主 客观下线
- 选举领头哨兵
- 选新主:筛选(试探存活)、优先级、ID小
集群模式
多主多从,数据分片(哈希槽)+ 主从复制模型
分布式数据库实现,多个节点组成集群提供服务,每个节点可以是主从模式下的多台服务器
将数据库分成16384个槽,每个节点负责处理一些槽