Redis集群学习

主从复制

   在主从复制概念中。数据库有两种一类是主数据库,一个类是从数据库。主数据库进行写操作,从数据库进行读操作。这种配置一个主数据库可以有多个从数据库,一个从数据库只能有一个主数据库。

- 配置主从复制

找到从数据库配置redis.conf 设置配置文件

slaveof 127.0.0.1 6379 #配置主数据库的IP与端口

  • 主从复制原理

    • 从数据库连接主数据库,发送SYNC命令
    • 主数据库接收到SYNC命令后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令
    • 主数据库BGSAVE执行完后,向所有从数据库发送快照文件,并在发送期间继续记录被执行的写命令
    • 从数据库收到快照文件后丢弃所有旧数据,载入收到的快照
    • 主数据库快照发送完毕后开始向从数据库发送缓冲区中的写命令
    • 从数据库完成对快照的载入,开始接收命令请求,并执行来自主数据库缓冲区的写命令
    • 主数据库每执行一个写命令就会向从数据库发送相同的写命令,从数据库接收并执行收到的写命令
  • 优点

    • 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
    • Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求
    • Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据
  • 缺点

    • Redis不具备自动容错和恢复功能要是有主从宕机服务端都会报错,需要等待机器重启
    • 主服务器宕机了要是有未同步的数据会造成主从不一致
    • 要是多个从(Slave)服务宕机需要重启的时候不能同时多个启动,因为从库启动的时候会发送sync请求和主机全量同步可能造成主数据库宕机

哨兵模式

   哨兵是一个独立的进程,其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。哨兵模式的工作原理是基于主从复制的。
  • 配置哨兵模式
    修改sentinel.conf配置文件

# 禁止保护模式 protected-mode no # 配置监听的主服务器,这里sentinel monitor代表监控,master代表服务器的名称,可以自定义,192.168.5.101代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。 sentinel monitor master 192.168.5.101 6379 2 sentinel auth-pass master 密码
  • 哨兵模式的工作方式

    • 每个Sentinel(哨兵)进程以每秒钟一次的频率向整个集群中的Master主服务器,Slave从服务器以及其他Sentinel(哨兵)进程发送一个 PING 命令。
    • 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel(哨兵)进程标记为主观下线(SDOWN)
    • 如果一个Master主服务器被标记为主观下线(SDOWN),则正在监视这个Master主服务器的所有 Sentinel(哨兵)进程要以每秒一次的频率确认Master主服务器的确进入了主观下线状态
    • 当有足够数量的 Sentinel(哨兵)进程(大于等于配置文件指定的值)在指定的时间范围内确认Master主服务器进入了主观下线状态(SDOWN), 则Master主服务器会被标记为客观下线(ODOWN)
    • 在一般情况下, 每个 Sentinel(哨兵)进程会以每 10 秒一次的频率向集群中的所有Master主服务器、Slave从服务器发送 INFO 命令。
    • 当Master主服务器被 Sentinel(哨兵)进程标记为客观下线(ODOWN)时,Sentinel(哨兵)进程向下线的 Master主服务器的所有 Slave从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。
    • 若没有足够数量的 Sentinel(哨兵)进程同意 Master主服务器下线, Master主服务器的客观下线状态就会被移除。若 Master主服务器重新向 Sentinel(哨兵)进程发送 PING 命令返回有效回复,Master主服务器的主观下线状态就会被移除。
  • 优点

    • 主从服务器可以自动切换

Cluster集群模式

鲁ICP备16017569号-2