1、简介
主从复制:指的是一个Redis服务器的数据,复制到其他的Redis服务器,前者称之为主节点(mater/leader),后者称之为从节点(slave/follower),数据的复制是单向,只能是从主节点到从节点,master以写为主,Slave节点以读为主。
- 默认情况,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或者没有从节点),但是一个从节点只能有一个主节点
主从复制作用:
- 数据冗余:主从复制实现的数据的热备份,是持久化之外的一种数据用于方式
- 故障恢复:当节点出现问题,可以从其他的节点提供数据服务,实现快速的故障恢复
- 负载均衡:在主从复制的基础上,配合读写分离,可以有主节点来提供写服务,由从节点提供读服务,分担服务器负载,可以提高Redis的并发量
- 高可用:主从复制还是哨兵和集群实现的基础,主从复制是高可用的基础
2、配置环境
配置环境主要配置从库,不需要配置主库
redis.conf
复制redis.conf配置文件,修改对应信息 slaveof host ip
- 1、端口号
- 2、pid文件名
- 3、dump.rdb名称
3、一主两从
默认的情况下,每台Redis服务器都是主节点,主要来配置从节点
两种模式
- 一个主机两个从机
- 链路模式
配置从机
Slaveof hots port(找主机)
(启动三个redis服务器:6379,6380,6381,配置6379为主节点,6380和6381位从节点)
查看主机信息
- 当前的命令行的配置是临时的,想配置永久化,需要在redis.conf配置文件中增加slaveof 这行配置信息
主机可以写,从机是可以读不能写,主机中的所有的信息和数据,都会保存到从机中
- 主机写:
- 从机只能读不能写:
4、哨兵模式
自动选取主机(老大)的模式
哨兵模式主要就是解决主从模式下,主服务器宕机后,从服务器需要人工干预,造成一段时间的不可用的问题,Redis从2.8版本提供了sentinel(哨兵)模式
哨兵模式能够监控主机是否故障,如果发生故障就根据投票自动的将从库转为主库
Redis中提供了哨兵命令,哨兵是一个单独的进程,独立的运行,用来监控Redis服务器,哨兵发送命令,等待Redis服务器的响应,可以监听多个Redis的实例
哨兵作用:
- 发送命令,让Redis服务器返回运行状态,包括主服务器和从服务器
- 当哨兵检测到master宕机,会自动将Slave切换为master,然后通知其他的从服务器,来修改配置文件,即切换主机
单个哨兵进程会存在单点故障问题,因此为了解决该问题,可以使用多个哨兵进行监控,各个哨兵之间还会进行监控,多哨兵模式
假设主服务器宕机,哨兵1首先检测到这个结果,系统并不会立即进行主从切换,仅仅是哨兵1主观的认为主服务器不可用,这个现象称之为主观下线。当其他的哨兵也检测到了主服务器不可用用,当数量达到一定值,那么哨兵就会进行一次投票,投票结果由一个哨兵发起,进行故障转移操作,即由一个哨兵通知其他哨兵和服务器进行从服务器切换为主服务器的过程,切换成功后,让各个哨兵将监控的从服务器切换为主机,这个过程称之为客观下线。
配置文件sentinel.conf
配置的就是哨兵模式的信息
sentinel monitor < master-name > < ip > < redis-port > < quorum >
sentinel monitor mymaster 127.0.0.1 6379 2
master-name
:主机名称
ip
:
redis-port
:主机的端口
quorum
:配置多少个sentinel
启动哨兵
redis-sentinel sentinel.conf
优缺点
优点:
- 哨兵模式,基于主从复制模式,具有主从复制所有的优点
- 自动完成主从切换,故障转移,系统可用性会更好
- 哨兵模式就是主从模式的升级,手动转自动,更加健壮
缺点:
- 实现哨兵模式的配置麻烦,里面涉及很多的选择
- Redis不好在线扩容,集群容量一旦达到上限,在线扩容就十分麻烦