Redis笔记(七):主从复制和哨兵模式
主从复制的作用:
- 数据冗余
- 故障恢复
- 负载均衡
- 高可用
原因:
- 单点故障
- 单台服务器内存有限,一般来说,单台最大不应该超过20G
配置
master服务器不用特殊配置
info replication # 查看集群主从信息
需要配置的项:
port 6379
daemonize yes # 打开后台运行
pidfile /var/run/reds_6379.pid
logfile "6379.log"
dbfilename dump6379.rdb
从机配置
从机ReadOnly无法写入,链式主从复制,中间的节点依旧属于Slave。
SLAVEOF host port # 使用命令进行配置
SLAVEOF no one # 从slave更新为master节点
replicaof <masterip> <masterport> # 使用配置项进行永久配置
复制原理
slave启动成功连接到 master 后会发送一个sync同步命令
master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制::master 继续将新的所有收集到的修改命令依次传给slave,完成同步但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
哨兵模式
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令等待Redis服务器响应从而监控运行的多个Redis实例。
多哨兵模式:
假设主服务器宕机,哨兵1先检测到这个结巢,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover[故障转移]操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。