全量同步(slave 初始化、增量失败会转全量)

  • 从服务器初次连接或重新连接时,会给 master 服务器发送同步请求
  • 主服务器接受到同步命令后执行 BGSAVE,把当前数据保存到 .rdb 文件,与此同时会把新执行的命令保存到一个缓冲区里面,当保存操作执行完毕后,主服务器把 .rdb 文件发送给从服务器。
  • 从服务器接受 .rdb 文件,将文件中的数据载入到内存
  • 之后主服务器会以 Redis 命令协议的格式,将命令缓冲区中积累的所有内容发送给从服务器。

    增量同步(master新增写操作)

    master 每执行一个写命令就会向从服务器发送同样的命令。

一些特点

主从复制 对于 master 是非阻塞的,同步过程中依然可以正常读写。
主从复制 数据传输的过程对于 slave 也是非阻塞的,完成前返回旧数据,将数据加载到内存中的阶段是阻塞的。
同步数据只会由 master 向 slave 同步。