redis-004主从复制知识

阅读量: zyh 2018-01-12 20:08:09
Categories: > Tags:

主从复制

Redis主从复制分为全量同步和增量同步

全量复制

1)从服务器连接主服务器,发送SYNC命令;

2)主服务器接收到SYNC命令后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 这个过程比较消耗CPU、内存和硬盘IO。

3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;

4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 这个过程是阻塞的,客户端无法访问从服务器。

5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;

6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;即部分复制。

部分复制

  1. 复制偏移量:主从节点分别维护一个复制偏移量。

  2. 复制积压缓冲区:主节点内部维护一个队列,用于在从节点两次复制间隔期内存放新的命令。从而实现从redis每次只需复制缓冲区里的命令。

    💥如果从节点同步的时候,【主节点的偏移量】-【从节点的偏移量】>【缓冲区长度】,则需要重新全量复制。

  3. 服务器运行ID:每一个redis运行的时候,都有一个运行ID,表明自己的身份。当主从同步的时候,主redis会将自己的运行id发给从redis。

    它的作用是,当从因某些原因导致主从断开,则断开期间:

    • 若主redis变了,则从redis重连后,需要全量复制。
    • 若主redis没变,则从redis重连后,则采取2号步骤。