zoukankan      html  css  js  c++  java
  • <Redis> 入门六 主从复制方式的集群

    1.集群如何操作

      现在有三台虚拟机,ip分别为100,105,106,将100作为master,其他两台作为slave

      

      1.vim redis.conf

      以前的版本是 slaveof <masterip> <masterport>

      

      我使用的是redis 5.0.3 

      所以是 replicaof <masterip><masterport> 分别代表主节点ip和主节点端口

      

      2.修改两个从节点,配置为如下,设置 eplicaof <masterip><masterport> ,masterauth 密码

      

      3.完成配置

    2.检查是否配置成功

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

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

      

      master发送命令

      

      在slave端获取

      

       无法在从节点上进行写的操作

      

    3.主从复制的原理

    3.1 全量同步

      1.slave 第一次连接 或 重连 到 master 上以后,会向 master 发送 sync 的命令

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

      3.master执行完bgsave后,将 rbd 文件发送给各slave节点

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

      5.master发送完rbd快照后,将缓冲区数据发送到slave

      6.slave完成对rbd的载入后,执行master缓冲区的写命令

       

    3.2 增量同步

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

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

    3.3 部分同步

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

      在redis2.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 宕机后,从服务器没办法进行动态选举,从只能读取就的数据。

  • 相关阅读:
    爬虫(Xpath)——爬tieba.baidu.com
    爬虫(正则)——爬neihan8
    爬虫(cookie)——renren模拟登陆
    爬虫(ProxyHandler)——代理
    爬虫(GET)——handler处理器和自定义opener
    爬虫(AJEX)——豆瓣动态页面
    爬虫(POST)——有道翻译(有bug)
    一次跨域请求出现 OPTIONS 请求的问题及解决方法
    现代JS中的流程控制:详解Callbacks 、Promises 、Async/Await
    nodejs中的子进程,深入解析child_process模块和cluster模块
  • 原文地址:https://www.cnblogs.com/mapleins/p/10175701.html
Copyright © 2011-2022 走看看