redis学习笔记(3):

一、Redis主从复制原理与优化:

1、主从复制原理

1.1:单机弊端:机器故障、容量瓶颈、QPS瓶颈

1.2:主节点(1)、子节点(n)===》一主多从;一从只能对一主;数据流向时单项的:主=>从

1.3:主从复制作用(数据部分、扩展性性能)

2、主从复制配置

2.1:客户端命令实现(不需要重启服务、但是不便于管理)

2.1.1、客户端[从服务器]命令实现绑定主节点(slaveof 主IP 主端口号),异步返回给客户端信息

2.1.2、客户端[从服务器]命令实现取消复制主节点(slaveof no one),异步返回给客户端信息【从服务器旧的节点数据不会删除】

2.2:修改配置文件实现(统一配置便于管理,但需要重启服务才生效)

2.2.1、slaveof 主ip 主端口号 (绑定主节点)

2.2.2、slave-read-noly yes|no(是否设置为只读)

3、全量复制和偏移量

3.1:全量复制(全部复制所有数据备份)

3.1.1:从节点发送psync run_id offset==》主节点接到请求,确认全量复制,发送fullsync run_id offset==》从节点保存信息==》主节点执行bgsave同时处理新写入请求,并刷新到buffer==》主节点发送rdb==》主节点发送buffer的新数据==》从节点刷新旧数据==》从节点load 新rdb数据

3.2:偏移量(info replication=》master_repl_offset:1888|slave_repl_offset:1978)

4、全量复制开销

4.1:bgsave(对主节点的cpu、内存、硬盘都有一定的开销)

4.2:RDB文件网络传输时间

4.3:从节点清空数据时间

4.4:从节点加载RDB时间

4.5:可能的AOF重写时间

4.6:部分复制(从节点失去连接==》主节点在此区间写一份数据到缓存中==》从节点重新连接==》发送pysnc run_id offset==》主节点根据偏移量continue复制缓存中的数据==》发送数据给从节点

5、主从复制故障处理(哨兵机制)

5.1:slave宕机

5.2:master宕机

6、开发与运维中的问题

6.1、读写分离

6.1.1:读流量分摊到从节点

6.1.2:可能遇到问题(复制数据延迟、读到过期的数据、从节点故障)

6.2、主从配置不一致

6.2.1:maxmemory不一致:丢失数据

6.2.2:数据结构优化参数(hash-max-ziplist-entries):内存不一致

6.3、规避全量复制

6.3.1:第一次全量复制(不可避免、小主节点,低峰)

6.3.2:节点运行ID不匹配(主节点重启[运行ID变化]、故障转移。例如哨兵和集群)

6.3.3:复制积压缓冲区不足(网络中断,部分复制无法满足;增大复制缓冲区配置rel_backlog_size,网络"增强")

6.4、规避复制风暴(出现大量的全量复制)

6.4.1:单主节点复制风暴(问题:主节点重启,多从节点复制;解决:更换复制拓补)

6.4.2:单机器复制风暴(机器宕机,大量全量复制;主节点分散多机器)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值