主从复制
基本概念
最少要一个主节点 二个从节点
默认情况下,每台Redis服务器都是主节点 且每一个主机节点可以有多个从几点(或者没有) 而每个从节点只能有一个主节点
指将一个Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点,后者称为从节点;数据的赋值时单向的,只能从主节点到从节点。Master以写为主,Slave以读为主。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点,但是一个从节点只能有一个主节点。
作用
数据冗余
主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
故障恢复
当主节点出现问题,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务的冗余
负载均衡
在主从赋值的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据的时候应该连接主节点 读Redis服务的时候应该连接从节点) 分组服务器负载 尤其是在写少读少的场景下,通过多个从节点分担负载 可以大大提高redis服务器的负载量
高可用(集群)基石
主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
细节
主机只能写 从机只能读(写会报错)
主机中的所有信息和数据 都会被从机保存
当主机宕机之后 从机仍然是从机 主机如果恢复了 从机仍可可以读取主机写的数据
如果是使用命令行来配置的主从 如果重启 从机就会变成主机
复制原理
从机Salve启动成功连接到主机master之后会发送一个syn同步命令
主机Master接受到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave 并完成一次完全同步
全量复制:从机slave服务器接收到数据库文件数据后,将其存盘加载到内存中。
增量复制:主机继续把新的所有收集到的修改命令一次传给slave 完成同步
只要是重新连接master 一次完全同步将自动执行
层层链路结构(薪火相传)
可以建立主机 - 从机(仍是从机)- 从机 的结构
从机仍然是从机 还是不能写
致主机的负载过大,所以,使用了传递的概念
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连按和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
中途变更转向:会清除之前的数据,重新建立拷贝最新的
Slaveof 新主库IP 新主库端口
宕机后手动配置主机(反客为主)
如果主机宕机了 可以选择一个从机当做主机
SlAVEOF no one//从机变成主机 其他的节点需要重新手动连接到这个新的主机
如果主机恢复了 它仍然是主机 但是它以及没有的从机