美文网首页
Redis部分同步和全同步

Redis部分同步和全同步

作者: lenny611 | 来源:发表于2021-08-22 23:57 被阅读0次

    假设主机A,从机B,C,D,其中该系统已经上线有一部分时间了,B突然掉线,那么B再次恢复连上主机A之后,是要同步掉线之间恢复的数据,还是主机A上的全量数据呢?遗憾的是,Redis2.8之前只能按照主机A上的RDB文件全量恢复数据,即全同步。
    具体同步过程如下:
    1.从机向主机发送Sync请求同步;
    2.主机将RDB文件发送给从机,并且将正在发生的写命令写到缓冲区发送给从机
    3.从机利用主机的RDB文件进行全同步。


    image.png

    实际上,如果只是断线重连,发送RDB文件这一步是可以省略的。

    SYNC命令:
    1.主服务器需要执行BGSAVE生成RDB文件,该操作会耗费CPU,IO和内存。
    2.发送RDB文件给从机,耗费网络资源,影响主服务器的响应时间。
    3.从服务器载入RDB文件陷入阻塞,无法处理命令请求。
    所以在需要的时候才执行SYNC命令。

    部分同步:通过PFYNC命令实现,这样就避免了全同步,减少了开销,具体流程如下:

    image.png
    部分同步的实现:
    1.主从机都维护一个复制偏移量,当偏移量不一致的时候,就是主从机状态不一致的时候,这时候只需要把相差的偏移量发送给从机同步即可。
    2.主机会把写命令写入复制挤压缓冲区内,
    image.png

    相关文章

      网友评论

          本文标题:Redis部分同步和全同步

          本文链接:https://www.haomeiwen.com/subject/ynqnultx.html