redis集群-主从复制

1.简介

互联网的架构中需要保证高并发,高性能,高可用。主从复制为了保证系统的高可用而诞生,指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点,后者称为从节点。数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave读为主禁止写。

2、主从复制架构

Master:数据提供方,主要负责写数据,可以读数据基本不读。
Slave:数据接收方法,主要负责读数据,禁止写。
数据同步:将master的数据热备份到slave中。
注意:Master和Slave是相对的,出现突发情况时,身份可以相互转换。

3、主从复制的作用

高可用:Redis服务器单点故障,其他服务器仍然可以提供服务,保证了Redis服务的高可用。
冗余备份:将数据进行热备份,实现数据的冗余备份
负载均衡:读写分离,由主节点提供写服务,由从节点提供读服务,分担服务器负载。

4、主从复制【全量复制】

将master中的数据全部复制到slave的过程叫做全量复制

# slave 发送全量复制指令
# master 执行bgsave
# master 生成RDB文件,发送给slave
# slave 接收RDB,清空数据,执行RDB文件恢复数据
# slave 发送命令告诉master,RDB复制完成

5、主从复制【部分复制】

将master复制缓存区的数据复制到slave的过程叫做部分复制,又称增量复制

master将RDB期间的命令记录在【repl_backlog】,并持续将log中的命令发送给slave
slave执行接收到的命令,增量同步,保持与master之间的同步

注意:repl_backlog_buffer。一种环形缓冲区,用于为增量同步做保障

6、主从复制,【主节点】怎么知道从哪来开发复制数据给【从节点】

# 主从服务器的复制偏移量【offset】,一个数字,描述主从复制已复制到的位置。
# master会存储每个【salve的偏移量】,从节点复制成功,发送ack命令给Master,然后Master的offset发送变化。
# savle只会存储自己的【偏移量】,从节点接收来自master的同步数据,并修正从节点的offset。
从节点什么时候更新offset呢? 就是在心跳的时候,主节点发送ping命令。

主从复制过程
建立连接
数据同步
命令传播(数据反复同步)

7、心跳机制

进入命令传播阶段,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线

master心跳:
周期性执行ping指令,判断slave是否在线。获取slave通过REPLCONF ACK的最后一次连接时间间隔。

slave心跳:
每秒发送REPLCONF ACK {offset}指令,汇报自己的【复制偏移量】,获取最新的数据变更指令,判断master是否在线

主从复制的过程中,主节点定期发送心跳包(PING)给从节点,同时附带上当前的复制偏移量。
从节点收到心跳包后,会将主节点的复制偏移量更新到自己的里面去。
如果从节点的复制偏移量与主节点的复制偏移量相差较大(超过 repl-backlog-size 配置的大小),
从节点可能会请求进行部分重同步(partial resynchronization),从而避免全量同步。

8、全量复制问题

如果master数据量巨大,在数据同步时一定要避开流量高峰期,避免造成master阻塞

数据同步开启缓冲区大小设定不合理,会导致数据溢出找出增量复制过程存在数据丢失,需要进行二次全量复制,致使slave陷入死循环。

为了避免slave进行全量复制、增量复制时服务器响应阻塞或者数据不同步,此期间应关闭对外服务。
多个slave同时对master请求同步,master发送的RDB文件增多,会对带宽造成巨大冲击,可以适量错峰同步。

原文:跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值