当前位置: 首页 > backend >正文

Redis进阶之高可用

一、redis的高可用方案

 1、主从模式:从会向主库同步数据库,从库与主库数据一样
    特点:master库挂掉,需要自己修复、手动指定新的master,可用性不高
    使用场景:基本不用

2、哨兵模式:就是在主从基础之上,附加了一套哨兵集群,哨兵集群用来监控并自动恢复主从
    特点:
        一主多从
        主挂掉后,哨兵集群会发现并从剩余的从库里选出一个新主,然后其他从都指向新主                      哨兵在主从的基础上做的,所以哨兵的缺点就是主从的缺点----》数据冗余
        
    使用场景:数据量不是很多、当集群规模不是很大、需要自动容错容灾的时候使用


3、cluster集群模式
    既有主从恢复的功能,又有一个非常重要的特点:数据会均匀分布(基于slot槽)

    使用场景:数据量比较大、QPS 要求较高的时候使用。

### 高可用方案本身支持读写分离,不需要中间件或者程序自己指定

二、主从模式

redis主从特点(类似mysql的主从)
    1、一主多从、主负责写、从负责读

    2、没有故障切换(主从恢复)

    3、一主节点可以有多个从节点
       但是一个从节点只能指唯一一个主节点(废话)

   
redis主从同步流程

    mysql主从:
        1、先全量同步数据
        2、再利用binglog日志进行增量同步
                
    redis主从:
        1、先全量
            基于rdb文件
        2、再增量
            主库把缓冲区内的增量语句发给从库,来进行增量同步

redis主从部署

规划:
        一主两从               
        master库:192.168.71.112 6379
        salve库1:192.168.71.113 6379
        salve库2:192.168.71.114 6379


主库配置:#yum安装 /etc/redis/redis.conf
    cat > /usr/local/redis/conf/redis.conf << 'EOF'
    daemonize yes
    bind 0.0.0.0
    port 6379
     
    masterauth 123456      #连主库用的密码
    requirepass 123456     #自己的密码
    #考虑后续主从可能会发生切换,建议无论主从都进行配置且保证密码相同 
    EOF

    systemctl restart redis

       

 从库配置:
    cat > /usr/local/redis/conf/redis.conf << 'EOF'
    # (1)修改
    daemonize yes
    bind 0.0.0.0
    port 6379
    # (2)增加
    # 配置主节点的ip和端口
    slaveof 192.168.71.112 6379

    # 从redis2.6开始,从节点默认是只读的
    slave-read-only yes

    # 主节点有登录密码,则必须指定
    masterauth 123456
    # 建议在从上也设置与主一模一样的密码,这与后续你切主会方便一些,因为无论哪个节点都是一样的密码
    requirepass 123456
    EOF

    systemctl restart redis

查看主从状态
info replication 
# 注意:redis 6.x版本与redis3.x版本不兼容
你用centos7.9默认yum安装的就是redis3.x版本,你用centos9默认yum安装的是redis6.x版

master彻底挂了,进行手动切换指定slave1为主
slaveof no one  # 将 slave1 变成新的 master(slave1)
slaveof 192.168.71.114 6379  # 将机器的主节点指向的这个新的 master(slave2) 
补充:
执行命令slaveof no one命令,可以关闭从服务器的复制功能。同时原来同步的所得的数据集都不会被丢弃。

 redis主从同步流程详解

    1、先全量
        从库启动后会发送sync请求,主库收到后会制作快照数据,发送给从库导入
    
    2、再增量
        在全量同步的过程中,主库会一直记录增量的语句到自己的缓冲区内
        待全量全量同步完成,主库会把缓冲区内的语句发给从库,从库进行增量导入
        
    3、后续的过程:
        从-------同步--------》主


                
三、哨兵模式

定义

1、介绍(哨兵是用来管理主从的机制)
哨兵模式是为了解决主从模式无法自动故障切换的问题而诞生的
哨兵模式是在主从模式的基础之上做的、附加了一套哨兵集群
哨兵集群通常是奇数个超过半数同意master挂掉,最终确定master是挂掉的

所以主从模式有数据冗余问题,哨兵模式当然也有


2、哨兵节点是什么
    哨兵节点是特殊的redis服务,命令名为redis-sentinel,不提供读写服务,主要用来监控redis-server。


3、哨兵节点都做什么?
    (1)监控(ping/pong机制)-----》所有的哨兵节点都去监控
    (2)自动故障切换 -----------》哨兵节点中的老大来做故障切换
        超过半数的哨兵都认为当前master挂掉了,就开始故障切换
        从剩余的从里选出一个新主,然把其余的从都指向新主
    
    (3)通知
        应用程序---------发布订阅-----------》哨兵集群------管理------》主从    
        哨兵集群一旦切过主,就会把新主的地址推送给应用程序
        

4、哨兵模式下,应用程序应该如何对接redis
    见上


5、应用与哨兵之间:基于发布订阅来获取redis集群状态

部署

6、哨兵集群部署
6.1 规划:
    一主两从:    
        master库:192.168.71.112 6379

http://www.xdnf.cn/news/8154.html

相关文章:

  • 选新手机的参考:CPU型号、内存、外存、屏幕、摄像头以及电池等。
  • 详解受约束的强化学习(三、公式关系串联)
  • 【Linux 服务器磁盘映像备份与恢复实战指南】虚拟机备份,物理机上云都可以用这套方案!
  • 2025年气候持续大风,消纳减少,如何保收益?东润能源整体解决方案持续保收益保增长
  • C++:面试题汇总
  • 系统与账户安全
  • 一个纯粹基于jQuery和Django的SSE站内信通知的例子
  • 飞牛fnNAS远程映射盘符
  • PARSCALE:大语言模型的第三种扩展范式
  • CAD如何导出PDF?PDF如何转CAD?详细教程来了
  • Phantom 根据图片和文字描述,自动生成一段视频,并且动作、场景等内容会按照文字描述来呈现
  • 对Web界面进行简单自动化测试Selenium
  • vscode git push 记录
  • 现代生活健康养生新策略
  • Aqua Mail Pro 安卓邮件管理助手可备份和恢复的邮件客户端 v1.55.1专业版
  • (第94天)OGG 微服务搭建 Oracle 19C CDB 架构同步
  • 网络安全-等级保护(等保) 3-1-1 GB/T 28448-2019 附录A (资料性附录)测评力度附录C(规范性附录)测评单元编号说明
  • spring boot 实现resp视频推流
  • 觉醒三境:在敦煌的风沙中寻找生命的纹路
  • 基于deepseek 以及豆包工具+nodejs 搭建A I自动化客服系统
  • 角度回归——八参数检测四边形Gliding Vertex
  • 树 Part 9
  • 【IC_Design】跨时钟域的寄存器更新后锁存
  • MyBatis-Plus的自带分页方法生成的SQL失败:The error occurred while setting parameters
  • (37)服务器增加ipv6配置方法
  • MySQL 查询用户权限的方法
  • redis-7.4.2 通过 systemd管理,rpmbuild spec文件参考
  • C++ JSON解析技术详解
  • QGIS DB Manager 导入 Shp 到 PostGIS 空间数据库
  • Mysql 刷题Day09