主从复制
定义
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
作用
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
- 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
- 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
正常情况下都会使用多台redis
配置一主二从环境
复制配置文件
配置从机
细节
主机断开:当主机断开连接后,从机依旧在主机上连接,但是此时主机断开则没办法进行写操作(只有主机才能写).如果主机再次连接回来,那么主机上写的信息从机依旧可以拿到
从机断开:如果使用命令行配置的主从,那么从机重启之后从机的身份消失恢复默认的主机,若再次设定为从机则立刻从主机中获取值
复制原理
全量复制:用于初次复制或其他无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作。
增量同步:Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
同步策略
主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。
链路型主从
此时80虽然既是主机又是从机但是还是无法写入,这种情况79写入80和81都能读到
如果主机79断开了连接,我们可以使用SLAVEOF no one让80变成主机此时81默认为他的从机!其他的节点就可以手动连接到最新的这个主节点,若79重新连接回来也是主机但是没有对应的从机了