Redis集群(四)
十二、Redis主从复制(集群)
1 概念
主从复制
将一台Redis服务器的数据,复制到其他的Redis服务器。前为主节点,后为从节点。
数据的复制是单向的,只能由主节点复制到从节点。主节点写,从节点读。
默认情况下,每台Redis服务器都是主节点。一个主节点可以有0个或者多个从节点,但每个从节点只能由一个主节点。
2 作用
数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式。
负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点负责读操作,分担服务器的负载;尤其是在多读少写的场景下,通过多个从节点分担负载,提高并发量。
高可用(集群)基石:主从复制还是哨兵和集群能够实现的基础。
3 使用集群的原因
集群就是指一组相互独立的计算机组成的一个较大的计算机服务系统
- 单台服务器难以负载大量的请求
- 单台服务器故障率高,系统崩坏概率大
- 单台服务器内存容量有限。
4 环境配置
查看当前库的信息命令:info replication
为从机配置主机:slaveof host port
5 主机从机复制原理
slave启动成功连接到master后会发送一个叫做sync同步命令。master接收到了,就会启动后台的存盘进程,开始收集修改数据集的命令,在存盘进程执行完毕之后,会将数据文件发送给slave,实现一次完全同步。
1、全量复制,Slave文件在接到Master发来的数据文件之后,会将其存盘并加载到内存
2、增量复制,Master和Slave已经实现同步的情况下,如果Master继续修改数据集,会将命令再次收集起来,再发送给Slave
只要是重新连接Master的服务器,在连接之后都会自动执行全量复制!!!
6 使用规则
1 从机只能读,不能写,主机可读可写但是多用于写。
2 当主机断电宕机后,默认情况下从机的角色不会发生变化 ,集群中只是失去了写操作,当主机恢复以后,又会连接上从机恢复原状。
3 当从机断电宕机后,若不是使用配置文件配置的从机,再次启动后作为主机是无法获取之前主机的数据的,若此时重新配置称为从机,又可以获取到主机的所有数据。
4 第二条中提到,默认情况下,主机故障后,不会出现新的主机,有两种方式可以产生新的主机:
- 从机手动执行命令slaveof no one,这样执行以后从机会独立出来成为一个主机
- 哨兵模式(自动选举)
十三、哨兵模式
1 简介
从原本的主从复制来说,如果主机宕掉了,需要手动设置一台从机为一个新的主机,但是这种手动的配置需要人工干预,耗费时间和人力,并且在人工干预的时间内还会造成服务不可用的情况,对于开发者来说这不是一种好的解决方案。Redis从2.8开始出现了哨兵模式
2 哨兵模式
Redis提供了哨兵的命令,并且它是一个特殊的模式,它会创建出一个完全独立于Redis服务器的进程。
哨兵的作用:
- 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
- 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
一个哨兵可以对多台服务器进行监控,并且可以有多个哨兵
主机挂掉之后,哨兵便会通过投票的方式在挂掉的主机下的从机中选出一个作为新主机,就算此时原来的主机回来了,在6380面前也只能成为从机了
哨兵的核心配置
sentinel monitor mymaster 127.0.0.1 6379 1
数字1表示 :当一个哨兵主观认为主机断开,就可以客观认为主机故障,然后开始选举新的主机。
启动哨兵模式:redis-sentinel sentinel.conf
3 优缺点
优点:
1、哨兵集群是基于主从复制来实现的,主从复制的优点全部具备
2、主从可以切换,故障可以转移,提升系统可用性
3、哨兵模式就是主从模式的升级,谋权篡位的手动到自动,更加健壮
缺点:
1、在线扩容比较麻烦,集群的数量达到上限,就会变得十分繁琐
2、实现哨兵模式的配置较为麻烦,如果出现故障,还会涉及到一些shell脚本的运行,这些都是非常麻烦的操作