【Redis】redis主从哨兵

news2025/4/25 1:03:45

Redis 主从复制

在访问量极高的场景下,单台 Redis 已难以承载所有请求,且单点故障风险高。通过主从复制,可以实现读写分离、数据备份与高可用。

概念

  • 主节点(Master):负责写操作,将数据变更同步给从节点。
  • 从节点(Slave/Replica):负责读操作,自动从主节点拉取最新数据。

优势

  • 性能提升:读请求分摊到多个从节点
  • 数据备份:从节点持有一份完整数据副本
  • 读写分离:写入在主节点,读取在从节点
  • 提高可靠性:主节点故障后,从节点仍可提供读取服务

搭建主从复制集群

可以用两台机器,也可在一台机器上启动多个 Redis 实例,只需用不同配置文件。

通用配置(主从共用)

requirepass 123456
loglevel notice
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis6379.log"
dbfilename dump.rdb
dir /var/lib/redis-slave6379
bind 0.0.0.0
port 6379
daemonize yes

从节点额外配置

masterauth 123456
replicaof 192.168.100.30 6379
  1. 先启动主节点,再启动从节点。

  2. 验证主从状态:

    # 主节点
    192.168.100.30:6379> info replication
    role:master
    connected_slaves:2
    ...
    
    # 从节点
    192.168.100.200:6389> info replication
    role:slave
    master_host:192.168.100.30
    master_link_status:up
    ...
    
  3. 测试读写

    • 主节点:可读可写
    • 从节点:只读,写入会报 READONLY You can't write against a read only replica.
  4. 断线重连
    如果从节点短暂断开,重新上线后会自动补同步这段时间的所有数据,不会丢失。

  5. 故障恢复
    主节点宕机,从节点不会自动“上位”。需人工或由哨兵进行故障转移。


主从从拓扑

当主节点被大量从节点挂载压力过大时,可使用“主→从→从”多级复制。

# 从节点命令示例,将当前实例从现有主切到新的主
192.168.100.200:6389> SLAVEOF 192.168.100.200 6379

注意:多级复制会引入更高的延迟。


退出从模式(无停机)

如果临时需要让某个从节点切换为主:

192.168.100.200:6389> SLAVEOF no one
OK
192.168.100.200:6389> info replication
role:master
connected_slaves:0
...

日志中会看到从节点断开主节点连接并开启主模式的记录。


主从复制工作流程

  1. 从节点启动 → 连接主节点 → 发送 SYNC(或 PSYNC)命令
  2. 主节点
    • 收到同步请求后后台生成一次完整的 RDB 快照
    • 将快照数据发送给从节点
    • 在生成快照期间及之后,将新的写命令缓存在内存并实时转发给从节点
  3. 心跳
    • 默认每 10 秒发送一次 PING 确保主从连接正常,可通过 repl-ping-replica-period 调整

Redis 哨兵(Sentinel)

Sentinel 负责监控主从集群健康,自动故障转移并通知客户端。

Sentinel 核心功能

  • 主从监控:实时检测主、从节点是否可用
  • 故障通知:将故障及切换结果告知客户端
  • 自动故障转移:主节点挂掉时,选举新的主节点并重配置所有从节点
  • 配置中心:自动更新 Redis 和 Sentinel 的配置文件

部署示例

  1. 准备一主二从,分别启动:

    redis-server /etc/redis6379.conf   # 主
    redis-server /etc/redis6389.conf   # 从1
    redis-server /etc/redis6399.conf   # 从2
    
  2. 配置并启动三台 Sentinel(建议奇数台):

    bind 0.0.0.0
    protected-mode no
    port 26379
    daemonize yes
    pidfile /var/run/redis-sentinel26379.pid
    logfile "/redisdata/sentinel26379.log"
    dir /redisdata
    
    sentinel monitor mymaster 192.168.100.131 6379 2
    sentinel auth-pass mymaster 123456
    

    启动命令任选其一:

    redis-sentinel /etc/sentinel26379.conf
    # 或
    redis-server /etc/sentinel26379.conf --sentinel
    
  3. 查看 Sentinel 日志,确认监控已生效。


故障转移流程

  1. 主观宕机判断(Sentinel 认为主不可达),标记 +sdown
  2. 投票:至少 quorum 台 Sentinel 同意
  3. 客观宕机确认,标记 +odown
  4. 配置更新:Sentinel 更新自身及 Redis 实例配置
  5. 切换主节点+switch-master
  6. 旧主恢复:如果旧主重启,按配置会被设为从节点,不再自动成为主
186501:X 19 Apr 2025 12:13:52.675 # +sdown master mymaster 192.168.100.30 6379
186501:X 19 Apr 2025 12:13:52.736 # +new-epoch 1
186501:X 19 Apr 2025 12:13:52.737 # +vote-for-leader 8e9617be2327ed19c589ee819bc725eb892ad700 1
186501:X 19 Apr 2025 12:13:52.747 # +odown master mymaster 192.168.100.30 6379 #quorum 3/2
186501:X 19 Apr 2025 12:13:53.874 # +switch-master mymaster 192.168.100.30 6379 192.168.100.200 6389

这些日志行展示了完整的故障转移过程:

  1. 首先检测到主节点宕机(+sdown)
  2. 开始新的选举周期(+new-epoch)
  3. 投票给指定的哨兵领导者(+vote-for-leader)
  4. 确认主节点客观宕机(+odown)
  5. 最终完成主节点切换(+switch-master),将主节点从192.168.100.30:6379切换到192.168.100.200:6389

常见问题排查

  1. 网络连通:防火墙、端口、SELinux 是否放行/关闭
  2. 认证密码:主从与 Sentinel 之间密码需一致
  3. 日志检查:从节点或 Sentinel 日志中有无错误提示
  4. 资源瓶颈:Redis 实例的 CPU、内存、磁盘 IO 是否到达上限

小贴士:生产环境中建议结合 Redis Cluster 或者更完善的高可用方案,根据业务需求选择合适的架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows docker desktop 无法访问容器端口映射

为什么使用docker desktop访问映射的端口失败,而其端口对应的服务是正常的? 常见问题,容器的防火墙没有关闭!!! 以centos7为例,默认情况下防火墙处于开启状态: 这下访问就OK了

OpenRAN 6G网络:架构、用例和开放问题

英文标题: Open RAN for 6G Networks: Architecture, Use Cases and Open Issues 作者信息 Bharat Agarwal:2016年毕业于Galgotias University,获得电气与电子工程学士学位;2023年在爱尔兰都柏林城市大学获得电子工程博士学位。2…

《TCP/IP详解 卷1:协议》之第四、五章:ARP RARP

目录 一、ARP && RARP 报文结构 1、ARP请求报文示例 2、ARP响应报文示例 3、RARP请求报文示例 4、RARP响应报文示例 5、关于 padding 6、免费ARP 二、tcpdump 的使用 1、基本语法 2、常用选项 3、常用过滤条件 三、arp 命令的使用 1、基本语法 2、常用选…

实战华为1:1方式1 to 1 VLAN映射

本文摘自笔者于2024年出版,并得到广泛读者认可,已多次重印的《华为HCIP-Datacom路由交换学习指南》。 华为设备的1 to 1 VLAN映射有1:1和N :1两种方式。1:1方式是将指定的一个用户私网VLAN标签映射为一个公网VLAN标签,是一种一对一的映射关系…

NLP 梳理03 — 停用词删除和规范化

一、说明 前文我们介绍了标点符号删除、文本的大小写统一,本文介绍英文文章的另一些删除内容,停用词删除。还有规范化处理。 二、什么是停用词,为什么删除它们? 2.1 停用词的定义 停用词是语言中的常用词,通常语义…

使用若依二次开发商城系统-1:搭建若依运行环境

前言 若依框架有很多版本,这里使用的是springboot3vue3这样的一个前后端分离的版本。 一.操作步骤 1 下载springboot3版本的后端代码 后端springboot3的代码路径,https://gitee.com/y_project/RuoYi-Vue 需要注意我们要的是springboot3分支。 先用g…

HarmonyOS-ArkUI: 组件内转场(transition)

什么是组件内转场 组件内转场指的是组件在触发转场的时机所具备的动画效果。转场的时机指的是,组件元素发生变化的时候,具体为: 组件被添加组件被删除组件可见性发生变化-Visibility这些场景有时候单纯的让其消失,出现,平移有时候视觉效果会比较突兀。我们可以利用组件内…

MVVM框架详解:原理、实现与框架对比

文章目录 1. 引言2. MVVM的基本概念3. MVVM的原理与实现3.1 数据绑定原理3.2 命令模式实现 4. MVVM的优势与局限性4.1 优势4.2 局限性 5. 常见MVVM框架对比5.1 MVVM Light5.2 Prism5.3 Caliburn.Micro5.4 MvvmCross5.5 ReactiveUI 6. 实际应用示例7. 最佳实践与注意事项7.1 MVV…

opencv--图像处理

这里所说的图像处理并不是专业术语&#xff0c;而是值开发人员对图像的处理技术方法。 教程 菜鸟教程 书籍推介--<opencv4.5 计算机视觉开发实践 基于vc>.朱文伟 获取图像数据 三种方式&#xff1a; cv::VideoCapture&#xff1a; OpenCV 提供的视频捕获类&#xff0…

达梦官方管理工具 SQLark——全面支持达梦、Oracle、MySQL、PostgreSQL 数据库!

SQLark 是一款面向信创应用开发者的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;已支持达梦、Oracle、MySQL数据库&#xff1b;在最新的 V3.4 版本中&#xff0c;SQLark 新增了对 PostgreSQL 的支持&#xff0c;兼容 PostgreSQL…

解读大型语言模型:从Transformer架构到模型量化技术

一、生成式人工智能概述 生成式人工智能&#xff08;Generative Artificial Intelligence&#xff09;是一种先进的技术&#xff0c;能够生成多种类型的内容&#xff0c;包括文本、图像、音频以及合成数据等。其用户界面的便捷性极大地推动了其广泛应用&#xff0c;用户仅需在…

理解计算机系统_网络编程(1)

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 网络是计算机科学中非常重要的部分,笔者过去看过相关的内…

栈和队列学习记录

一、栈 1.栈的概念 操作受限的线性表-----栈&#xff1a;栈只允许在表的一端进行插入和删除操作&#xff0c;这一端被称为栈顶&#xff08;Top&#xff09;&#xff0c;另一端则是栈底&#xff08;Bottom&#xff09;。这种受限的操作方式使得栈遵循后进先出&#xff08;LIFO…

React SSR + Redux 导致的 Hydration 报错踩坑记录与修复方案

一条“Hydration failed”的错误&#xff0c;让我损失了半天时间 背景 我在用 Next.js App Router Redux 开发一个任务管理应用&#xff0c;一切顺利&#xff0c;直到打开了 SSR&#xff08;服务端渲染&#xff09;&#xff0c;突然看到这个令人头皮发麻的报错&#xff1a; …

轻量级景好鼠标录制器

景好鼠标录制器&#xff08;详情请戳 官网&#xff09;是一款免费无广的键鼠动作录制/循环回放工具&#xff0c;轻松自动化应对一些重复繁琐的操作任务&#xff0c;如来回切换窗口、文档同一相对位置的复制粘贴等场景&#xff0c;兼容Win XP - 11 。毕竟此款本身主打简约类型&a…

leetcode--两数之和 三数之和

1.两数之和 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 …

FFMPEG-视频解码-支持rtsp|rtmp|音视频文件(低延迟)

本人亲测解码显示对比延迟达到7到20毫秒之间浮动兼容播放音视频文件、拉流RTSP、RTMP等网络流 基于 Qt 和 FFmpeg 的视频解码播放器类,继承自 QThread,实现了视频流的解码、播放控制、帧同步和错误恢复等功能 工作流程初始化阶段: 用户设置URL和显示尺寸 调用play()启动线程解…

openEuler安装nvidia驱动【详细版】

注意&#xff1a;在 openEuler 24.03 LTS 系统中安装 NVIDIA 驱动&#xff08;RTX 3090&#xff09;需要禁用默认的 Nouveau 驱动并手动安装官方驱动。 一、准备工作 系统更新与依赖安装 更新系统并安装必要依赖包&#xff1a;sudo dnf update -y sudo dnf install gcc make k…

基于Python爬虫的豆瓣电影信息爬取(可以根据选择电影编号得到需要的电影信息)

# 豆瓣电影信息爬虫(展示效果如下图所示:) 这是一个功能强大的豆瓣电影信息爬虫程序,可以获取豆瓣电影 Top 250 的详细信息。 ## 功能特点 - 自动爬取豆瓣电影 Top 250 的所有电影信息 - 支持分页获取,每页 25 部电影,共 10 页 - 获取每部电影的详细信息,包括: - 标题…

基于PaddleOCR对图片中的excel进行识别并转换成word优化(二)

0、原图 一、优化地方 计算行的时候&#xff0c;采用概率分布去统计差值概率比较大的即为所要的值。 def find_common_difference(array):"""判断数组中每个元素的差值是否相等&#xff0c;并返回该差值:param array: 二维数组&#xff0c;其中每个元素是一个…