6、主从复制:
主从复制是指将一台redis服务器中的数据,复制到其他的redis服务器,前者成为主节点(master),后者称为从节点(Slave);数据的复制是单向的,只能是主节点到从节点。
主从复制的作用:
1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式;
2、故障恢复:当一台redis服务器发生故障时,另外一台继续工作;
3、负载均衡:从主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读服务,分担服务器负载;尤其是在写多读少的情况下,通过多个从节点分担读负载,可以大大提高redis服务器的并发量;
4、高可用。
主从复制的原理:
1、salve启动成功连接到master后,会给master发送数据同步消息(发送sync命令)
2、master接收到slave发来的数据同步消息后,把主服务器的数据进行持久化到rdb文件,同时会收集接收到的用于修改数据命令,master将传rdb文件发送给slave,完成一次完全同步。
3、全量复制:而slave服务在接收到master发来的rdb文件后,将其加载到内存;
4、增量复制:master继续将收集到的修改命令依次传给slave,完成同步;
5、但是只要重新连接master,依次完全同步(全量复制)将会被自动执行。
7、哨兵(Sentinel)模式
sentinel会按照指定的频率给master发送ping请求,看看master是否还活着,若master在指定时间内未正常响应sentinel发送的ping请求,sentinel则认为master挂掉了,但是这种情况存在误判的可能,比如:可能master并没有化,只是sentinel和master之间的网络不通导致,导致ping失败。为了避免误判,通常会启动多个sentinel,一般是奇数个,比如3个,那么可以指定当有多个sentinel都觉得master挂掉了,此时才断定master真的挂掉了,通常这个值设置为sentinel的一半,比如sentinel 的数量是3个,那么这个量就可以设置为2个。当多个sentinel经过判定,断定master确实挂掉了,接下来sentinel会进行故障转移:会从slave中投票选出一个服务器,将其升级为新的主服务器, 并让失效主服务器的其他从服务器slaveof指向新的主服务 器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以 使用新主服务器代替失效服务器。
# 配置文件目录
dir D:/Redis-x64-5.0.10/sentinel
# 日志文件位置
logfile "./sentinel-26379.log"
# pid文件
pidfile D:/Redis-x64-5.0.10/sentinel_26379.pid
# 端口
port 26379
# 监控主服务器master的名字:mymaster,IP,port,最后的数字2表示当Sentinel集群中有2个Sentinel认为master存在故障不可用,则进行自动故障转移
sentinel monitor mymaster 192.168.8.220 6379 2
# master响应超时时间(毫秒),Sentinel会向master发送ping来确认master,如果在20秒内,ping不通master,则主观认为master不可用
sentinel down-after-milliseconds mymaster 60000
# 故障转移超时时间(毫秒),如果3分钟内没有完成故障转移操作,则视为转移失败
sentinel failover-timeout mymaster 180000
# 故障转移之后,进行新的主从复制,配置项指定了最多有多少个slave对新的master进行同步,那可以理
解为1是串行复制,大于1是并行复制
sentinel parallel-syncs mymaster 1
# 指定mymaster主的密码(没有就不指定)
sentinel auth-pass mymaster 123456