主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情。
- 配置文件
在从库的配置文件中加入 slaveof ip port
- 启动服务端时
redis-server /redis.conf --slaveof ip port
- 客户端指令
slaveof -ip -port
1. 准主库, 去除主库 slaveof no one 2. 从库更换主库 slaveof ip port 3. 查看主从信息 info replication
哨兵的核心功能是主节点的自动故障转移.
监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
通知(Notification):哨兵可以将故障转移的结果发送给客户端。
bind 127.0.0.1 port 26379 dir /var/redis/data/ logfile "26379.log" // 当前Sentinel节点监控 127.0.0.1:6379 这个主节点 // 2代表判断主节点失败至少需要2个Sentinel节点节点同意,少数服从多数 // mymaster是主节点的别名 sentinel monitor mymaster127.0.0.1 6379 2 //每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达 sentinel down-after-milliseconds mymaster 30000 //当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点, 原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1 sentinel parallel-syncs mymaster 1 //故障转移超时时间为180000毫秒 sentinel failover-timeout s18ms 180000 daemonize yes # 配置多个哨兵,只需要修改端口即可
redis-sentinel /sentinel-26379.conf
redis-server /sentinel-26379.conf --sentinel
info sentinel
哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。
哨兵节点本质上是redis节点。
每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。
在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(config rewrite)。用来主从切换
一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。
原文:https://www.cnblogs.com/q767498226/p/11110241.html