深入解析:redis高可用-主从复制和哨兵模式

news/2026/1/19 10:56:16/文章来源:https://www.cnblogs.com/gccbuaa/p/19500625

文章目录

  • 前言
  • 一、持久化
    • 1、持久化介绍
    • 2、rdb持久化
      • 2.1、rdb快照
      • 2.2、触发条件
      • 2.3、bgsave流程原理
    • 3、AOF持久化
      • 3.1、aof介绍
      • 3.2、开启AOF
  • 二、主从复制
    • 1、主从复制介绍
    • 2、主从复制作用
    • 3、主从复制流程
  • 三、哨兵模式
    • 1、哨兵模式介绍
    • 2、哨兵模式原理
    • 3、哨兵模式作用
    • 4、故障转移机制
  • 四、redis主从复制部署
    • 1、环境规划
    • 2、redis安装
    • 3、修改redis配置文件(master、slave)
    • 4、验证主从结果
      • 4.1、master节点验证
      • 4.2、slave节点验证
  • 五、哨兵模式部署(所有节点)
    • 1、环境规划
      • 1.1、服务器规划
      • 1.2、系统配置
    • 2、修改redis哨兵模式配置文件
    • 3、启动哨兵模式
    • 4、故障模拟
  • 总结


前言

本文围绕 Redis 高可用核心技术,系统解析持久化、主从复制与哨兵模式的原理及价值,结合实操部署与故障验证,助力快速落地稳定可靠的 Redis 架构。


一、持久化

1、持久化介绍

持久化是最简单的高可用方法,主要作用是数据备份,即将数据存
储在硬盘,保证数据不会因进程退出而丢失。

2、rdb持久化

2.1、rdb快照

定期把数据快照保存到磁盘
优点:文件小,恢复快。
缺点:可能丢几分钟数据。

2.2、触发条件

手动触发:(使用bgsave)
在redis交互页面输入:bgsave或者save即可触发快照,生成rdb文件
save命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在Redis服务器阻塞期间,服务器不能处理任何命令请求。
而bgsave命令会创建一个子进程,由子进程来负责创建RDB文件,父进程(即Redis主进程)则继续处理请求。
总结:因此save已基本被废弃,线上环境要杜绝save的使用。
自动触发:
vim /etc/redis/6379.conf

save m n
--219行--以下三个save条件满足任意一个时,都会引起bgsave的调用
save 900 1 :当时间到900秒时,如果redis数据发生了至少1次变化,则执行bgsave
save 300 10 :当时间到300秒时,如果redis数据发生了至少10次变化,则执行bgsave
save 60 10000 :当时间到60秒时,如果redis数据发生了至少10000次变化,则执行bgsave
--254行--指定RDB文件名
dbfilename dump.rdb
--264行--指定RDB文件和AOF文件所在目录
dir /var/lib/redis/6379
--242行--是否开启RDB文件压缩
rdbcompression yes

自动触发最常见的情况是在配置文件中通过save m n,指定当m秒内发生n次变化时,会触发bgsave。
其他触发快照的场景:

shutdown # redis服务优雅退出,会触发快照
stop # redis被关闭,可能会触发快照,不稳定
exit # 退出redis-cli,服务没关闭
quit # 退出redis-cli,服务没关闭

2.3、bgsave流程原理

  1. Redis父进程首先判断:当前是否在执行save,或bgsave/bgrewriteaof的子进程,如果在执行则bgsave命令直接返回。 bgsave/bgrewriteaof的子进程不能同时执行,主要是基于性能方面的考虑:两个并发的子进程同时执行大量的磁盘写操作,可能引起严重的性能问题。
  2. 父进程执行fork操作创建子进程,这个过程中父进程是阻塞的,Redis不能执行来自客户端的任何命令
  3. 父进程fork后,bgsave命令返回”Background saving started”信息并不再阻塞父进程,并可以响应其他命令
  4. 子进程创建RDB文件,根据父进程内存快照生成临时快照文件,完成后对原有文件进行原子替换
  5. 子进程发送信号给父进程表示完成,父进程更新统计信息

3、AOF持久化

3.1、aof介绍

RDB持久化是将进程数据写入文件,而AOF持久化,则是将Redis执行的每次写、删除命令记录到单独的日志文件中,查询操作不会记录; 当Redis重启时再次执行AOF文件中的命令来恢复数据。 与RDB相比,AOF的实时性更好,因此已成为主流的持久化方案。

3.2、开启AOF

# Redis服务器默认开启RDB,关闭AOF;要开启AOF,需要在配置文件中配置
vim /etc/redis/6379.conf
--700行--修改,开启AOF
appendonly yes
--704行--指定AOF文件名称
appendfilename "appendonly.aof"
--796行--是否忽略最后一条可能存在问题的指令
aof-load-truncated yes
/etc/init.d/redis_6379 restart

二、主从复制

1、主从复制介绍

一主多从,主写从读。
主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。
主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

2、主从复制作用

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

3、主从复制流程

(1)若启动一个Slave机器进程,则它会向Master机器发送一个“sync command”命令,请求同步连接。
(2)无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。
(3)后台进程完成缓存操作之后,Master机器就会向Slave机器发送数据文件,Slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。
(4)Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

三、哨兵模式

1、哨兵模式介绍

主机宕机,自动切换到从机。

2、哨兵模式原理

哨兵(sentinel):是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 Master并将所有slave连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

3、哨兵模式作用

4、故障转移机制

1.由哨兵节点定期监控发现主节点是否出现了故障
每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。
2.当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于3个节点。
3.由leader哨兵节点执行故障转移,过程如下:

  • 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;
  • 若原主节点恢复也变成从节点,并指向新的主节点;
  • 通知客户端主节点已经更换。
    需要特别注意的是,客观下线是主节点才有的概念;如果从节点和哨兵节点发生故障,被哨兵主观下线后,不会再有后续的客观下线和故障转移操作。

四、redis主从复制部署

1、环境规划

服务器规划
master节点:192.168.10.105
slave01节点:192.168.10.106
slave01节点:192.168.10.107
安装依赖:(所有节点全部执行)

yum install -y gcc gcc-c++ make
# 下载redis安装包
wget -p /opt http://download.redis.io/releases/redis-5.0.7.tar.gz

2、redis安装

关闭防火墙和关闭增强服务(所有节点执行)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装redis(所有节点执行)

cd /opt
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd redis-5.0.7
make && make install prefix=/usr/local/redis
cd utils/
./install_server.sh
# 一直回车,直到跳出选择路径,输入/usr/local/redis/bin/redis-server
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
# 软链接省略,因为redis相关文件已经被安装到/usr/local/bin/
# ln -s /usr/local/redis/bin/* /usr/local/bin/

3、修改redis配置文件(master、slave)

master节点:

vim /etc/redis/6379.conf
#修改为 0.0.0.0 后,Redis 对外暴露,必须搭配 requirepass(设置连接密码),否则任何人都能访问 / 篡改数据,这是生产环境的必做操作。
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程(后台进程)
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
appendonly yes #700行,开启AOF持久化功能

/etc/init.d/redis_6379 restart
slave节点:

vim /etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录 #288行,指定要同步的
# Master节点IP和端口
#将当前 Redis 实例设置为指定主节点的从节点(副本节点),实现数据的主从同步。
replicaof 192.168.10.22 6379
appendonly yes #700行,开启AOF持久化功能

/etc/init.d/redis_6379 restart

4、验证主从结果

4.1、master节点验证

在Master节点上看日志:
tail -f /var/log/redis_6379.log
在这里插入图片描述
在Master节点上验证从节点:
redis-cli info replication
在这里插入图片描述
主节点写入数据,查看从节点
在这里插入图片描述
在这里插入图片描述

4.2、slave节点验证

redis-cli -p 6379
info replication
在这里插入图片描述

五、哨兵模式部署(所有节点)

1、环境规划

1.1、服务器规划

master:192.168.10.105
slave01:192.168.10.106
slave02:192.168.10.107

1.2、系统配置

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2、修改redis哨兵模式配置文件

vim /opt/redis-5.0.7/sentinel.conf
# 修改
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.10.23 6379 2 #84行,修改 指定该哨兵节点监控
sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000(180秒)

3、启动哨兵模式

先启master,再启slave
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

查看哨兵信息
redis-cli -p 26379 info Sentinel
在这里插入图片描述

4、故障模拟

# 查看redis-server进程号
ps aux | grep redis
# 关闭主节点
kill -9 pid # 或在redis交互页面shuntdown

追踪master和slave日志
tail -f /var/log/sentinel.log
在这里插入图片描述
在master节点输入以下内容,查看master是否被切换:
redis-cli -p 26379 INFO Sentinel
在这里插入图片描述


总结

本文全面覆盖 Redis 持久化机制、主从复制架构及哨兵模式,从理论原理到部署实操层层递进,通过环境配置与故障模拟,为高可用部署提供可直接落地的实践指南。

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

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

相关文章

聊聊上海二类医疗器械备案和三类备案区别在哪,了解一下 - 工业品牌热点

随着医疗器械行业监管趋严,上海二类医疗器械备案成为众多医疗企业合规经营的关键环节,但企业在办理过程中常因人员要求不明确、设备标准模糊等问题受阻。本文围绕上海二类医疗器械备案的高频问题展开解答,结合上海看…

Docker部署Code-Server

https://www.cnblogs.com/zqingyang/p/19219504

tModLoader模组开发实战指南:突破开发瓶颈的7个关键技巧

tModLoader模组开发实战指南:突破开发瓶颈的7个关键技巧 【免费下载链接】tModLoader A mod to make and play Terraria mods. Supports Terraria 1.4 (and earlier) installations 项目地址: https://gitcode.com/gh_mirrors/tm/tModLoader 你是否在tModLo…

从 DWG / IFC 到工程级可视化:HOOPS 如何支撑 AEC 软件底层能力?

从 DWG / IFC 到工程级可视化:HOOPS 如何支撑 AEC 软件底层能力?随着市场变化和需求增加,开发者需要明确能够满足行业需求的基础架构。要开发出现代化的建筑信息模型(AEC)软件,通常需要解决四个基础领域的问题:…

2025浙江山地车公园口碑大揭秘,谁更出色?山地车骑行/户外骑行/乡村骑行/山地速降/山地车,山地车旅游打卡点推荐 - 品牌推荐师

近年来,随着全民健身热潮的持续高涨与户外运动产业的蓬勃发展,山地自行车运动已从一项小众极限运动,逐步演变为大众休闲、健身与社交的重要方式。浙江省凭借其得天独厚的丘陵地貌与绿水青山,涌现出一批各具特色的山…

【2026版】最新逻辑漏洞挖掘思路与总结,零基础入门到精通,收藏这篇就够了

逻辑漏洞是指由于程序逻辑不严导致一些逻辑分支处理错误造成的漏洞,在实际开发中,因为开发者水平不一,没有安全意识,而且业务发展迅速,内部测试没有及时到位,所以常常会出现类似的漏洞,导致攻击…

PlugY暗黑2单机革命:打破原版枷锁的终极解决方案

PlugY暗黑2单机革命:打破原版枷锁的终极解决方案 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 还在为暗黑破坏神2单机模式的种种限制而苦恼吗&#xff…

2026年网络安全怎么学?从菜鸟到高手的完整学习路线图,零基础系统学习Web安全逆向工程漏洞挖掘

不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选? 不同于Java、C/C等后端开发岗位有非常明晰的学习路线&am…

2026口碑数据揭秘:副主任医师考试十大高通过率网课实测排名 - 医考机构品牌测评专家

2026口碑数据揭秘:副主任医师考试十大高通过率网课实测排名前言随着2026年副主任医师考试备战进入关键期,选择一套系统高效的网课成为众多在职考生提升竞争力的核心路径。本文旨在建立一套多维测评体系,对当前市场中…

2026年高速制袋机定制厂家排名,瑞安市天晟包装机械有限公司名列前茅! - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为包装生产企业选型提供客观依据,助力精准匹配适配的包装机械服务伙伴。 TOP1 推荐:瑞安市天晟包装机械有限公司 推荐指数:★★★★★ | 口碑评分…

小火车时刻 App 的隐私说明

本 App 完全离线运行,不会收集任何用户数据。 三之奇科技有限公司 二〇二六年一月十九日 10:48

2026最新测评:主任医师十大优质网课年度排行,对比哪家强? - 医考机构品牌测评专家

2026最新测评:主任医师十大优质网课年度排行,对比哪家强?前言主任医师考试对知识深度、思维广度及临床决策能力的要求都更为严苛。选择与之匹配的优质网课,是备考成功的关键一环。本文从课程深度、服务强度、技术效…

三极管共射放大电路调试基础与准备

问:为什么三极管共射放大电路调试是 PCB 板功能验证的关键环节?三极管共射放大电路是模拟电子电路的基础拓扑,广泛应用于信号放大、滤波、振荡等场景,其性能直接决定了 PCB 板上模拟模块的功能稳定性。在 PCB 制造完成后&#xff…

PlugY暗黑破坏神2无限储物与符文之语完全解锁指南

PlugY暗黑破坏神2无限储物与符文之语完全解锁指南 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 还在为暗黑2单机模式的各种限制而烦恼吗?储物空间不足、…

2026卫生高级职称考试直播课推荐与通关指南 - 医考机构品牌测评专家

2026卫生高级职称考试直播课推荐与通关指南前言2026年卫生高级职称考试的备考工作已全面展开。在临床任务繁重与自我提升需求并存的环境下,选择一套能够提供系统化指导、显著提升备考效率的直播课程,成为影响备考成败…

保姆级2026网安学习路线:从零到专家,一份超详细避坑指南

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊,学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间,光语言都有几门,有些人会倒在学习 linux 系统及命令的路上&#…

拒绝幻觉!零代码搭建专属 AI 知识库|RAG 教程

承接上期RAG原理,本文将深入实战:利用 Cherry Studio 构建基于 Embedding 模型的私有知识库系统,实现文档级语义理解与定制化问答能力。本次实战将使用 Cherry Studio ,它是一个功能齐全的客户端,它不仅支持多模型管理…

月嫂培训哪家强?2026年成都培训机构排名与推荐,解决标准与服务支持难题 - 品牌推荐

2026年成都月嫂培训机构决策咨询评测报告 研究概述 本报告旨在为计划进入母婴护理行业或寻求技能提升的个人,提供一份关于成都市月嫂培训机构的客观比较与决策参考。随着三孩政策深入实施与家庭对专业化育儿服务需求的…

原圈科技AI营销白皮书:破解酒旅获客难,不懂将被淘汰

🚀 2026酒旅增长新引擎 | AI驱动获客革命📌 核心摘要原圈科技的AI营销白皮书深入探讨了酒旅行业如何应对流量成本攀升与获客挑战。本文系统性阐述了生成式AI如何通过深度洞察力、高效创意力及精准沟通力这"三驾马车",重构获客全链路。通过原圈…

基于Xilinx的FPGA在线升级程序:仅7系列及以上支持

基于xilinx的FPGA在线升级程序,仅7系列以上支持一、代码背景与模块定位 本文档解析的代码源自Xilinx 7系列Kintex-7 FPGA(型号xc7k325tffg900-2)的在线升级系统项目,具体对应dbghubsimnetlist.v文件,是Vivado 2020.2工…