您当前的位置: 首页 >  redis

Redis主从复制方式集群及原理

发布时间:2021-03-16 21:23:20 ,浏览量:0

0x01. 集群如何操作

现在有三台虚拟机,ip 分别为:

192.168.0.100
192.168.0.105
192.168.0.106

将 192.168.0.100 作为 master, 其他两台作为 slave

  • vim redis.conf

老版本 Redis 

slaveof  

新版版本 Redis

 replicaof 

这里使用 Redis 5.0.3,所以配置是

 replicaof 

分别代表主节点 ip 和主节点端口

  • 修改两个从节点的配置,配置为如下

replicaof  
masterauth 密码

0x02. 检查是否配置成功

重启三台服务器,然后在从节点下输入指令: info replication

可以看到 role 是 slave,以及主机 ip、端口,状态等信息,即代表配置成功。  

在 master 节点发送命令

在 slave 节点获取

在 slave 节点,进行写操作。发现无法在从节点上进行写的操作

0x03. 主从复制的原理 3.1 全量同步
  • slave 第一次连接 或 重连 到 master 上以后,会向 master 发送 sync 的命令

  • master 收到 sync 命令,执行 bgsave 生成 rdb 快照,新的命令会写进缓冲区

  • master 执行完 bgsave 后,将 rdb 文件发送给各slave节点

  • slave 接收到 rbd 文件,丢弃旧的 rdb 数据,执行新的 rdb 快照

  • master 发送完 rdb 快照后,将缓冲区数据发送到 slave

  • slave 完成对 rdb 的载入后,执行 master 缓冲区的写命令

3.2 增量同步

slave 服务器完成初始化,工作正常,主服务器发生写操作同步到从服务器

增量同步主要是:主服务器每执行一条写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的命令

3.3 部分同步

       当 master 服务器断线后,从服务器需要重新发送 sync 命令,这样会消耗大量服务器 cpu、内存、磁盘,并且传送 rdb 还会消耗网络资源等

       在 Redis 2.8 版本后,部分同步 psync 来执行同步的命令。

       master在内存中给每个slave维护了一份同步日志和同步标识。每个 slave 和 master 同步都会携带自己的同步标识和上次同步的最后位置

       当 master 断线重连后,slave 带着自己的同步标识,和上次同步的最后位置去找 master , 如果 slave 的偏移量在 master 同步日志中

  那么 slave 从偏移量开始的位置继续同步,无需进行全量同步。

3.4 同步策略

  第一次连接,进行全量同步,全量同步结束后,进行增量同步。

  如果断开,尝试部分同步,不行的话,依然采用全量同步。

 3.5 部分命令

   通过 replconf listening-port 6379

   sync,去向主服务器发送同步命令,此时进入通过输出模式,并不断发送 ping 包

master 写入数据

slave 就会输出从缓冲区来的数据

replica-server-stale-data yes 意味着必须完成 master 同步之后才能做接下来的操作。可以防止数据不一致的情况

缺点:主从复制时,当 master 宕机后,从服务器没办法进行动态选举,从只能读取旧的数据。

喜欢,在看

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    111726博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0837s