Redis主从复制的原理是什么

发布时间:2021-06-17 17:23:28 作者:Leah
来源:亿速云 阅读:354

今天就跟大家聊聊有关Redis主从复制的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

主从复制的作用

主从复制的方式

全量复制

用于初次复制或其它无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作,当数据量较大时,会对主从节点和网络造成很大的开销

Redis主从复制的原理是什么

全量复制过程:

  1. Redis内部会发出一个同步命令,刚开始是Psync命令,Psync ? -1表示要求master主机同步数据

  2. 主机会向从机发送run_id和offset,因为slave并没有对应的 offset,所以是全量复制

  3. 从机slave会保存主机master的基本信息

  4. 主节点收到全量复制的命令后,执行bgsave(异步执行),在后台生成RDB文件(快照),并使用一个缓冲区(称为复制缓冲区)记录从现在开始执行的所有写命令

  5. 主机发送RDB文件给从机

  6. 发送缓冲区数据

  7. 刷新旧的数据。从节点在载入主节点的数据之前要先将老数据清除

  8. 加载RDB文件将数据库状态更新至主节点执行bgsave时的数据库状态和缓冲区数据的加载。

全量复制开销

部分复制

部分复制是Redis 2.8以后出现的,用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果条件允许,主节点会补发丢失数据给从节点。因为补发的数据远远小于全量数据,可以有效避免全量复制的过高开销,需要注意的是,如果网络中断时间过长,造成主节点没有能够完整地保存中断期间执行的写命令,则无法进行部分复制,仍使用全量复制

Redis主从复制的原理是什么

部分复制过程:

  1. 如果网络抖动(连接断开 connection lost)

  2. 主机master 还是会写 repl_back_buffer(复制缓冲区)

  3. 从机slave 会继续尝试连接主机

  4. 从机slave 会把自己当前 run_id 和偏移量传输给主机 master,并且执行 pysnc 命令同步

  5. 如果master发现你的偏移量是在缓冲区的范围内,就会返回 continue命令

  6. 同步了offset的部分数据,所以部分复制的基础就是偏移量 offset。

服务器运行ID(run_id):每个Redis节点(无论主从),在启动时都会自动生成一个随机ID(每次启动都不一样),由40个随机的十六进制字符组成;run_id用来唯一识别一个Redis节点。 通过info server命令,可以查看节点的run_id。

开发运维常见的问题

  1. 读写分离

  1. 主从配置不一致

  1. 规避全量复制

例如:如果网络中断的平均时间是60s,而主节点平均每秒产生的写命令(特定协议格式)所占的字节数为100KB,则复制积压缓冲区的平均需求为6MB,保险起见,可以设置为12MB,来保证绝大多数断线情况都可以使用部分复制。

  1. 复制风暴 master节点重启,master节点生成一份rdb文件,但是要给所有从节点发送rdb文件。对cpu,内存,带宽都造成很大的压力

看完上述内容,你们对Redis主从复制的原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. Redis--主从复制原理
  2. 深入Redis 主从复制原理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis

上一篇:Android中View绘制流程的原理是什么

下一篇:JDK动态代理的原理是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》