Redis-主从同步

  • 配置命令

    SLAVEOF ip port 即可完成主从同步的设置

  • 同步过程

    • 初次同步

      1.从服务器想主服务器发送SYNC命令

      2.主服务器执行BGSAVE,生成RDB文件(快照保存),并使用一个缓冲区记录从BGSAVE开始的所有写命令(记录增量)

      3.主服务器将RDB文件传输给从服务器,从服务器加载RDB文件

      4.主服务器将缓冲区的写命令发送给从服务器

      5.主服务器将同步之后的写命令,进行命令传播(command propagate)保持主从一致

    • 断线重连同步

      1.复制积压缓冲区(replication backlog)中如果还存在断线之后从服务器的复制偏移量( replication offset) 的信息,主服务器将从服务器复制偏移量之后的命令重新传播给该从服务器, 即可省去初次同步中1~4的步骤

  • 细节

    • 服务器运行ID(run ID): 初次复制会将主服务器的运行ID保存起来,断线重连之后如果保存的运行ID和主服务器的运行ID不一致,则执行完整同步操作(初次同步)
    • 心跳检测: 从服务器默认每秒一次向主服务器发送当前的复制偏移量
    • min-slaves: 当从服务器数量少于xx个或者xx个从服务器延迟(lag)值大于等于yy秒时,主服务器将拒绝执行写命令
  • 总结

    Redis的主从同步就是快照+增量的套路.关键词:复制偏移量, 复制积压缓冲区(对命令传播做了短暂的持久化),命令传播, 心跳检测

你可能感兴趣的:(Redis-主从同步)