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

Redis主从复制

  • 什么是主从复制
  • 主从复制配置
  • 全量复制和部分复制
  • 故障处理
  • 开发运维常见问题
主从复制作用;
  1. 解决单点故障
  2. 容量瓶颈
  3. QPS瓶颈,读写分离
主从复制配置
  1. 命令:(动态生效)
    slaveof ip port
    取消:slaveof no one
  2. 配置文件:(需要重启)
slaveof ip port
slave-read-only yes #从节点只读

主从复制其实依赖RDB文件

全量复制和部分复制
全量复制

这里写图片描述

全量同步的工作细节:
master 开启一个后台保存进程,以便于生产一个 RDB 文件。同时它开始缓冲所有从客户端接收到的新的写入命令。当后台保存完成时, master 将数据集文件传输给 slave, slave将之保存在磁盘上,然后加载文件到内存。再然后 master 会发送所有缓冲的命令发给 slave。这个过程以指令流的形式完成并且和 Redis 协议本身的格式相同。
—–Redis中文官方文档

全量复制开销:
1. bgsave时间
2. RDB文件网络传输时间
3. 从节点清空数据时间
4. 从节点加载RDB的时间
5. 可能的AOF重写时间

部分复制:

由于网络抖动等原因主从之间丢失连接,期间存在部分数据的不同步,主节点会将这期间的数据写入一个缓冲队列中,当从节点重新连接上主节点后,主节点判断从节点的offset偏移量是否在该缓冲中,然后将从偏移量开始到队列结束的数据同步给slave
这里写图片描述

无需磁盘参与的复制
正常情况下,一个全量重同步要求在磁盘上创建一个 RDB 文件,然后将它从磁盘加载进内存,然后 slave以此进行数据同步。
如果磁盘性能很低的话,这对 master 是一个压力很大的操作。Redis 2.8.18 是第一个支持无磁盘复制的版本。在此设置中,子进程直接发送 RDB 文件给 slave,无需使用磁盘作为中间储存介质。
–redis官方文档http://www.redis.cn/topics/replication.html

故障处理
  • 自动故障转移
    slave故障:一主多从的情况,客户端迁移
    master故障:选择slave成为新的master,客户端迁移

手动,脚本。。

主从复制没有解决真正的故障自动转移
—-> 高可用—->Redis sentinel

问题:

1. 读写分离
master负责写,slaves负责读
可能问题:
- 数据复制的延迟
- 读到过期的数据(master过期数据,slave未同步,redis3.2解决)
- 从节点故障
2. 主从配置不一致
比如maxmemory不一致会产生数据的丢失,从内存小于主内存,淘汰机制丢失数据,
数据结构优化参数:主节点有,从节点没有,造成内存不一致
3. 规避全量复制(带来的开销)
- 第一次全量复制不可避免,,夜间运行,分片。。
- 节点运行ID不匹配(主节点重启等)
- 复制积压缓冲区不足–>增大复制缓冲区配置rel_backlog_size
4. 规避复制风暴
大量的主从复制。
- 单主节点重启
- 单机器复制,机器上有多个节点
主节点分散到多个机器

采用高可用的架构,slave晋升机制

— kay 为知笔记整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

带着天使反上帝 - Kaybee

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

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

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

打赏作者

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

抵扣说明:

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

余额充值