VMware|Redis高可用方案—主从(masterslave)架构( 二 )


  • master节点将rdb快照文件发送完毕后 , 开始将缓冲区中的写命令发送给slave节点;
  • slave节点完成rdb文件数据的载入后 , 开始执行接收到的写命令 。
  • 以上就是master-slave全量同步的原理 , 执行完上述动作后 , slave节点就可以接受来自用户的读请求 , 同时 , master节点与slave节点进入命令传播阶段 , 在该阶段master节点会将自己执行的写命令发送给slave节点 , slave节点接受并执行写命令 , 从而保证master节点与slave节点的数据一致性 。
    增量数据同步Redis2.8版本之前 , 是不支持增量数据同步的 , 只支持全量同步 。 增量数据同步是指slave节点初始化完成后 , master节点执行的写命令同步到slave节点的过程 。 该过程比较简单 , master节点每执行一个写命令后就会将该命令发送给slave节点执行 , 从而达到数据同步的目的 。
    但有一点需要注意 , 当增量复制过程中发生了异常导致同步失败时 , 是要支持断点续传的 , 也就是在异常恢复之后 , 是要支持从上次断掉的地方继续同步的 , 而不是全量数据同步 。 这就需要在master节点和slave节点分别维护一个复制偏移量(offset) , 代表master向slave节点同步的字节数 。 master节点每次向slave节点发送N个字节后 , master节点的offset增加N;slave节点每次接收到master节点发送过来的N个字节后 , slave节点的offset增加N 。 master节点和slave节点的这两个偏移量分别保存在master_repl_offset和slave_repl_offset这两个字段中 。
    主从模式搭建
    1. 首先准备三台虚拟机 , 我使用的是VMware+CentOS7 , 可以参考我之前的文章虚拟机环境搭建(VMware Workstation14 + centos7)VMware+CentOS7 网络及静态IP配置?安装好虚拟机环境 , 每台虚拟机上装好Redis;
    2. 两台slave节点上配置master节点信息 , 有三种方式:
    (1) redis.conf配置文件中添加:replicaof master节点IP master节点端口;
    (2) 启动命令后加上:--replicaof master节点IP master节点端口;
    【VMware|Redis高可用方案—主从(masterslave)架构】(3) slave节点启动后 , 直接执行命令:replicaof master节点IP master节点端口 。
    这里我们使用常用的配置文件的方式配置:

    3. 重启3台redis服务 , 查看slave节点的启动日志 , 可以看到master的节点信息.

    4. 验证主从结构是否可用 。
    (1) 首先 , master和slave上的数据都是空的;
    (2) master节点上添加一条数据 , 然后去slave节点上发现已经把这条数据同步了过来 。
    (3) slave节点上执行写命令会报错:

    (4) 在master节点上执行:info replication命令可以看到自己的slave节点信息:

    至此 , 说明我们的主从架构已经搭建成功了 。
    主从模式的好处主从模式的优点有很多 , 下面列举几个最明显的好处:
    1. 数据备份 。 同样的数据在多个节点都存一份 , 起到了备份数据的作用 。
    2. 故障恢复 。 当master节点发生故障后 , 可以选择一个slave节点作为master节点继续提供服务 。