概念
主从复制,是指一台Redis服务器的数据,复制到其他Redis的服务器,前者称为主服务器节点,后者称为从节点。数据的复制是单向的,只能从主节点到从节点,Master以写为主,Slave以读为主。
作用
1)数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
2)故障恢复:当主节点出现问题,可以由从节点提供服务,实现快速的故障恢复
3)负载均衡:实现读写分离,主节点负责写,从节点负责读,分担服务器负载
4)高可用:主从复制还是哨兵和集群能够实施的基础
环境
只配置从库,不用配置主库
info replication 查看当前主库的信息
新建三个配置文件,修改其中的端口
1.端口 port
2.pid名字
3.log文件
4.备份文件dumprdb
开启了三个服务
一主二从
只需要配置从机
79主 8081从
这样的配置只能是暂时,如果想要永久配置,还需要从配置文件入手
如果从机断开连接,再重启,他就会变成主机了
复制原理
Slave启动成功连接到master 会发送一个sync命令
master接收到命令之后,启动后台的存盘进程,同时收集所有接收到用于修改数据集的命令,在后台进行执行完毕,master将传送整个数据文件到slave,并完成一次同步
全量复制:slave服务在接收到数据库文件之后,将其存盘并加载到内存中
增量复制:master继续将所有收集到的修改命令发送给slave,完成同步
只要slave重新连接master,一次完全同步(全量复制)将会被自动执行
哨兵模式
主从切换的方法,需要人工手动的进行切换,需要人工干预,费时费力,还会造成一段时间内服务不可用。哨兵模式,可以解决这个问题
哨兵模式是一种特殊的模式,首先redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行,监控多个redis实例
单哨兵
通过发送命令,让redis服务器返回监控运行其状态,包括主服务器和从服务器
当哨兵检测到master宕机了,告知一个slave让其成为master,然后通过发布/订阅通知其他的从服务器,修改配置文件,让它们形成了多哨兵模式。
多哨兵
各个哨兵互相监控,假设主服务器宕机,哨兵1先检测这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观认为的主服务器不可用,这个现象成为主观下线,当后面的哨兵的检测到主服务器不可用,并且数量达到一定数值。那么哨兵之间会就会进行一次投票,投票的结果由一个哨兵发起,进行failover故障转移操作,切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器切换为主机,这个称为客观下线
如果Master断开连接了,这时候就会从从机中根据算法选取一个服务器
优点
哨兵集群,基于主从复制模式,所有的主从复制配置优点,他都有
主从可以切换,故障可以转移,系统的可用性会更好
哨兵模式就是主从复制的升级,从手动变成自动
劣势
redis不好在线扩容,集群容量一旦达到上限,在线扩容就十分麻烦
实现哨兵模式的配置其实很麻烦的
哨兵模式的配置文件
默认30S