redis主从复制原理

网友投稿 810 2022-05-28

基本概念

持久化保证了即使 Redis 服务重启也不会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单点故障.

主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性

解释说明

主 redis 中的数据有两个副本(replication)即从 redis1 和从 redis2,即使一台 redis 服务器宕机其它两台 redis 服务也可以继续提供服务

redis主从复制原理

主 redis 中的数据和从 redis 上的数据保持实时同步,当主 redis 写入数据时通过主从复制机制会复制到两个从 redis 服务上。

只有一个主 redis,可以有多个从 redis。

主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求。

主从作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

故障恢复:当主机宕掉了之后,就没有办法向数据库中写数据了,怎么办?其余的 Salve 根据配置的策略,选出一台晋升为 Master,其余的 Slave 成为新 Master 的从机,当原来宕掉的 Master 恢复后,自动成为 Slave,实现了容灾恢复。

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写 Redis 数据时应用连接主节点,读 Redis 数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。

高可用:保证了数据的高可用。因为数据在多台服务器上存储了多份,即使一台机器宕掉了,其余的机器还可以顶上。

读写分离: 什么叫读写分离?写数据在 Master 上,读数据是在 Slave 上,这就叫读写分离。它缓解了以往 Master 既要处理读数据又要处理写数据的压力,Master 上负责写,Slave 上负责读,大大提升了数据库服务器的性能。

数据同步

redis 2.8版本以上使用psync命令完成同步,过程分“全量”与“部分”复制

全量复制:一般用于初次复制场景(第一次建立SLAVE后全量)

部分复制:网络出现问题,从节点再次连接主节点时,主节点补发缺少的数据,每次数据增量同步

心跳:主从有长连接心跳,主节点默认每10S向从节点发ping命令,repl-ping-slave-period控制发送频率

主从故障如何故障转移?

主节点(master)故障,从节点slave-1端执行 slaveof no one后变成新主节点;

其它的节点成为新主节点的从节点,并从新节点复制数据;

需要人工干预,无法实现高可用。

主从的缺点

主从复制,若主节点出现问题,则不能提供服务,需要人工修改配置将从变主

主从复制主节点的写能力单机,能力有限

单机节点的存储能力也有限

Redis

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何在弹性云服务器自建私人云盘?Docker部署Nextcloud极简教程
下一篇:破世界纪录了!用Python实现自动扫雷
相关文章