面试整理-redis主从复制和集群哨兵模式

目录

一、redis主从复制

二、哨兵模式

三、哨兵模式的优缺点


一、redis主从复制

主从复制中数据的复制时单项相的,只能从主节点复制到从节点(主写从读)

主从复制读写分离可以实现:

1. 数据热备份;2. 故障恢复;3. 负载均衡;4. 集群哨兵等高可用的基础

1. 环境配置

只配置从库,不配置主库,例如:一主(79)二从(80,81)

a. 修改从节点的配置文件,区分节点信息:1. 端口号;2. pid文件;3.日志文件名;4. rdb文件名

b. 127.0.0.1:6380/6381> slaveof 127.0.0.1:6379

(命令搭建是暂时的,真实的开发主从复制配置是在从库的配置文件中配置,是永久性的)

2. 使用规则

这里只讨论修改配置文件永久性的情况,因为手动命令搭建后,机器重启,默认都是主节点

a. 从机只能读,不能写;主机可读可写,但是多用于写

b. 主机宕机,从机状态不变,依旧能连到主机,只是此时不可以写操作。待主机恢复后,依然会连接到从机,状态恢复原状;

3. 主机宕机产新主机的方式

a. 其它从节点手动执行slaveof no one 就可以让自己变成新的主机

b. 哨兵模式(自动选举)

4. 主从复制原理

slave启动—>连接master并发送sync同步命令—>master启动存盘程序并收集所有修改数据集命令—>后台进程执行完毕—>master把整个数据文件传给slave—>完成同步

只要是重新链接master,就会自动进行全量同步,所有数据在从机一点可以找到

二、哨兵模式

1. 背景

主机宕机后,如手动把另一台服务器切换为主机,人工干预费时费力,服务还会有一段时间不可用

redis从2.8还是提供哨兵模式(sentinel),在确认主机宕机后自动选取一个新的主机;哨兵为独立进程,通过哨兵发送命令,等待服务器响应,从而监控多个redis实例

单个哨兵会出问题,一般会配置多个哨兵(哨兵集群,配置类似redis的集群配置)

2. 核心配置

a. 配置哨兵的文件:snetinel.config

b. 如:sentinel monitor  mastername(主机名称)  127.0.0.1 6379 1

数字1表示当一个哨兵判断主机宕机,就可客观认为是主机故障,然后开始选举新的主机

c. redis-sentinel 哨兵文件path //命令启动哨兵

3. 哨兵的作用

a. 哨兵通过发送命令,让redis服务器返回其状态,包括主从服务器

b. 当哨兵检测到master宕机,会自动将slave切换成master,通过发布订阅让其他从服务器自动修改其配置文件,从而切换主机

4. 哨兵的过程

主机宕机,1个哨兵检测到不会马上进行故障转移(failover),通过投票算法计算,当超过一半哨兵都检测到,才会进行failover并切换主机;若原主机再恢复,只能当新主机的从机

三、哨兵模式的优缺点

优点:主机宕机时,主从自动切换,故障转移,提高系统可用性

缺点:集群达到一定规模,不好扩容,配置麻烦

你可能感兴趣的:(redis,redis,面试,数据库)