Redis的主从复制和哨兵机制

Redis的主从复制、哨兵机制 Redis的主从复制、哨兵机制主从复制使用redis集群的好处?哨兵机制主机宕机后哨兵机制做什么?宕机的主机恢复后哨兵机制做什么?配置主从复制 主从复制 将Redis 主机(master) 中的数据,复制到其他 从机(slave) 中。 使用一个Redis的实例作为主机,其他实例作为从机。客户端向主机中写入数据,主机将数据复制到所有从机中,读取数据时由从机来返回数据,达到读写分离。 客户端发送写命令给主机 主机将数据同步到从机中 客户端发送读命令给从机 使用redis集群的好处? 数据访问量很大时,如 阅读详情

目录

1.主从复制

(1)复制实例

(2)修改配置文件

主库

从库6380(6381的操作也一样)

(3)验证配置

2.哨兵机制

核心 3 大功能

哨兵选举的 2 个核心阶段

阶段 1:判定主库真宕机(客观下线)

阶段 2:选举(2 层选举,先选哨兵 leader,再选新主库)

① 选举哨兵领导者(负责执行故障切换)

② 选举新主库(从存活的从库中选)

关键细节

(1)配置哨兵

(2)模拟主库宕机

(3)新主库的值修改


1.主从复制

        持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

说明:

1.主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。

2.主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

3.只有一个主redis,可以有多个从redis。

4.主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求

5.一个redis可以即是主又是从,如下图:

(1)复制实例

把redis的bin目录和配置文件复制到另外一个目录下面作为另外一个redis实例:

其中6379作为主库,其他两个是从库

每一个库里面的文件如图所示:

bin目录:

赋予文件可执行权限的命令:

chmod +x [文件名]

(2)修改配置文件

主库

找到如下配置项并且修改它们:

bind 0.0.0.0

监听所有IPv4接口,允许外部连接

也可以指定特定的IP

requirepass [客户端连接密码]

客户端连接的密码

protected-mode yes

开启保护模式

daemonize yes

开启守护进程模式,redis在后台运行

如果是no的话,redis就会在前台运行

从库6380(6381的操作也一样)

修改配置文件

我用的是redis5.0.4版本

挂载命令用的不是slaveof

replicaof [主库ip] [主库端口]
#让这个实例运行到6380端口(6381的话就改成6381)
port 6380
pidfile /var/run/redis_6380.pid
requirepass [连接密码]
#如果配置了主库密码,从库需要配置主库的密码
masterauth [主库密码]

(3)验证配置

我们可以使用我们本地windows的Redis远程连接工具连接

连接主库和从库之后,在主库上面添加数据,从库上面也能查询到

Host是运行6381实例的主机ip(我们现在是三个redis实例都在一个主机上,所以填相同的ip就行了)

AUTH是密码,就是上面配置好的

填写完之后点击Test Connection

看到连接成功就可以点ok了

然后在6379端口的主库添加键:

然后在另外两个库里面查看:

2.哨兵机制

哨兵是 Redis 主从架构的 “监控 + 自动故障恢复” 组件,核心解决主库宕机后手动切换主从的问题,保证集群高可用。

核心 3 大功能

1.监控:持续检查主库、从库是否存活;

2.故障自动切换:主库宕机后,从哨兵选举新主库,让其他从库同步新主库;

3.通知:把故障和切换结果告知客户端 / 运维。

哨兵选举的 2 个核心阶段

哨兵的选举分 “判定主库宕机” 和 “选举新主库 + 哨兵领导者” 两步,缺一不可:

阶段 1:判定主库真宕机(客观下线)
  1. 单个哨兵发现主库无响应 → 标记为 “主观下线”(自己认为宕机);
  1. 该哨兵向集群中其他哨兵发 “确认请求”;
  1. 超过  quorum (配置文件中 monitor 后的数字)个哨兵确认主库宕机 → 标记为 “客观下线”(集群公认宕机)。
阶段 2:选举(2 层选举,先选哨兵 leader,再选新主库)
① 选举哨兵领导者(负责执行故障切换)

所有哨兵通过 “Raft 协议” 投票:每个哨兵都能参选,先到先得,获得半数以上选票的哨兵成为 leader;

只有 leader 会执行后续的 “选新主库、切换主从” 操作,其他哨兵仅待命。

② 选举新主库(从存活的从库中选)

哨兵 leader 按以下优先级选新主库(从上到下筛选):

  1. 排除宕机、网络不通的从库;
  1. 选 replica-priority (从库优先级)值更小的(默认 100,0 表示无参选资格);
  1. 选复制偏移量更大的(数据和旧主库更同步);
  1. 选运行 ID 更小的(最终兜底规则)。

关键细节

  1. 哨兵集群要求:至少部署 3 个哨兵(奇数),避免投票平局; quorum 建议设为哨兵数量的半数 + 1(如 3 个哨兵设 2);
  1. 切换后动作:新主库会被关闭只读( replica-read-only no ),其他从库会被修改 replicaof 指向新主库;
  1. 客户端适配:客户端需连接哨兵获取主库地址,而非直接连固定 IP: 端口(否则切换后连不上新主库)。

核心环节

关键逻辑

哨兵作用

监控主从 + 自动故障切换 + 通知

宕机判定

主观下线 → 超过 quorum 确认 → 客观下线

选举流程

先选哨兵 leader(Raft 协议)→ 再选新主库(优先级 + 偏移量 + 运行 ID)

核心保障

3 个以上哨兵 + 奇数部署,避免脑裂 / 投票平局

(1)配置哨兵

我们使用多配置文件方式创建三个哨兵

在6379主库目录下创建3个哨兵配置文件 sentinel_26379.conf 、 sentinel_26380.conf 、 sentinel_26381.conf

配置文件如图:

# 哨兵自身端口
port 26379

# 守护进程模式
daemonize yes

# pid文件路径
pidfile /var/run/redis-sentinel-26379.pid

# 日志文件路径
logfile "/var/log/redis/sentinel_26379.log"

# 工作目录
dir /tmp

# 核心监控配置:监控主库master 127.0.0.1:6379 quorum=2
# 格式:sentinel monitor <主库名称> <主库IP> <主库端口> <quorum值>
sentinel monitor master 127.0.0.1 6379 2

# 主库密码(若主库有requirepass,必须配置!无密码则注释这行)
sentinel auth-pass master 主库密码

# 主库无响应超时时间(30秒)
sentinel down-after-milliseconds master 30000

# 故障切换超时时间(180秒)
sentinel failover-timeout master 180000

# 并行同步从库数(1个,避免主库压力大)
sentinel parallel-syncs master 1

剩下两个哨兵也这样配,只需要改端口就行了

改完端口之后,创建好日志目录

mkdir -p /var/log/redis

然后启动哨兵:

没权限的话先给权限

chmod +x redis-sentinel

进入6379的bin目录,运行如下命令:

./redis-sentinel ../sentinel_26379.conf
./redis-sentinel ../sentinel_26380.conf
./redis-sentinel ../sentinel_26381.conf

我们可以用命令确认是否启动

ps -ef | grep redis-sentinel

登录哨兵,可以看到如下信息:

./redis-cli -p 26379

我们重点看

name(主库名称):master

ip(主库ip):127.0.0.1

port(主库端口):6379

num-slaves(识别到2个从库6380/6381):2

num-other-sentinels(识别到其他的2个哨兵):2

127.0.0.1:26379> sentinel master master
 1) "name"
 2) "master"
 3) "ip"
 4) "127.0.0.1"
 5) "port"
 6) "6379"
 7) "runid"
 8) "f3507f05bcf0b74f9f1bc02963e84b0c6e9e446d"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "390"
19) "last-ping-reply"
20) "390"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "1785"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "272743"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

(2)模拟主库宕机

我们先把主库停掉

然后等待30秒(对应配置的  down-after-milliseconds 30000 )

这里我们看到master主库已经变成了6380

然后我们恢复6379,在26379哨兵当中查看:

sentinel get-master-addr-by-name master

6379出现在从库列表当中

(3)新主库的值修改

我们在恢复6379之前,6380作为新的主库也能够进行正常的读写操作:

然后在6381处查看:

redis的主从复制(读写分离)和哨兵机制理论 之前讲了redis的持久化,持久化保证了即使 redis 服务重启也不会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种’单点故障’。 Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 Redis主从... 阅读详情

相关推荐

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1515

Redis的主从复制和哨兵机制详解

很多企业都没有使用到 Redis 的集群,但是至少都做了主从。有了主从,当 master 挂掉的时候,运维让从库过来接管,服务就可以继续,否则 master 需要经过数据恢复和重启的过程,这就可能会拖很长的时间,影响线上业务的持续服务。主从复制也有人才称之为主从同步,其实两个说的是一个东西,主要是为了避免单节点Redis出现故障而导致服务无法使用,所以采用部署多个节点,虽然是多个节点,`但是节点之间的数据是始终是保持同步(一样)的数据`,要新增key/value都新增kev/value,要删除都删除

怪咖@的博客 8567

三. zemax光学设计流程+案例

文章目录zemax 基本操作:1. 建立光学基本模型2. 像质评价3. 优化(重点)4. 公差分析简单镜头设计 zemax 基本操作: 1. 建立光学基本模型 2. 像质评价 3. 优化(重点) 对系统设定的约束条件或目标值 统称为操作数。 操作数: 光学特性参数(焦距EFFL,近轴放大率PMAG,入瞳位置EMPP) 像差参数(球差SPHA,彗差COMA,像散ASTI) 边界条件(中心厚度值CTVA,边缘厚度值ETAV) 优化的主要步骤: 设置评价函数和优化操作数 一般小像差系统采用波像差 构建

Taiiiii的博客 8051

Redis主从复制&哨兵模式

搭redis主从复制 与 哨兵模式 实现一主二从。主结点提供写,从结点提供读(主从复制)。当主结点挂掉后,从 从结点中筛选出一个作为主结点(哨兵模式)。从而让Redis再次可以正常的向外提供读写服务。即保证Redis的高可用性 概念 主从复制是指将一台redis服务器上的数据,复制到其他的Redis服务器,前者称为主结点(master/leader),而后者被称为随从结点(slave/follower)。数据在master和slave中只能单向传输,数据是从master传到slave中。master结点可读

jianghuchuang的博客 717

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1685

大疆Livox Mid-70雷达的使用

一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25

LacyExsale的博客 1万+

Redis高可用(主从复制、哨兵模式)详解

Redis高可用

喻师傅的学习笔记 1309

在ROS中使用行为树

在ROS中使用行为树 我提供的工程示例文件: demo链接 文章目录在ROS中使用行为树0、 学习本教程的前提1、 behaviorTree 库安装(ROS使用下的安装方式)2、 处理 behaviortree 库并准备好 service 和 ros action2.1 对ROS 的 service 和 action 进行封装,使其在 behaviortree 上使用更加方便。2.2 创建一个 service 和一个 action2.3 创建与决策树相关的数据类型2.4 修改`package.xml`文件2

qq_37416258的博客 6375

redis主从复制和哨兵模式

redis主从复制和哨兵部署

weixin_44195169的博客 299

SAP SD实战:用BADI_SLS_HEAD_SCR_CUS给销售订单VA01/VA02加自定义字段(附完整函数组代码)

本文详细解析了在SAP SD模块中如何利用BADI_SLS_HEAD_SCR_CUS实现销售订单(VA01/VA02)的屏幕增强,包括数据结构设计、函数组创建和BADI接口实现。通过实战案例和完整代码,帮助开发者掌握在SAPMV45A标准流程中添加自定义字段的关键技术,提升业务定制化能力。

weixin_27015733的博客 368

UG476 GT Transceivers文档翻译和自身理解

对UG476 Xilinx官方文档进行翻译的基础上加上自己的理解

weixin_45143788的博客 4596

redis主从复制和哨兵机制

一、Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一、新增redis6380.conf, 加入 slaveof 192.168.152.1286379, 在6379启动完后再启6380,完成配置; b,配置主从复制方式二、redis-server --slaveof 192...

Ithao2的博客 432

Java零基础之多线程篇:线程间如何通信?

随着计算机技术的发展,多线程编程已经成为现代软件开发中的一个重要方向。在多线程编程中,线程间的通信是一个非常关键的问题。在Java开发语言中,Java提供了一些机制来实现线程间的通信,帮助开发者协调不同线程之间的执行顺序和数据交换。本文将介绍Java多线程编程中的线程间通信的相关知识。首先,我们将从简介开始,介绍线程间通信的基本概念和原理。然后,我们将通过源代码解析的方式,深入探讨Java中实现线程间通信的方法。接着,我们将给出一些应用场景案例,展示线程间通信在实际开发中的应用。

喵手的博客 1557

redis主从复制模式和哨兵机制

①单点故障:数据存储在一台服务器上,服务器出现故障就会导致数据丢失。所以我们需要将数据复制多份部署在多台不同的服务器上,在配置文件中指定这几台 redis 之间的主从关系。②主从复制:多台 redis 服务器的数据同步功能,主服务器(master)负责写入数据,同时把写入的数据实时同步到从(slave )机器,从服务器负责读当 Master 服务出现故障,需手动将 slave 中的一个提升为 master, 剩下的 slave 挂至新的master 上(冷处理:机器挂掉了,再处理)

baomingshu的博客 540

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Redis高并发和高可用:主从复制、哨兵机制和Redis集群

Redis高并发和高可用:主从复制、哨兵机制和Redis集群

郑某某的博客 3247

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Redis主从复制和哨兵机制

Redis主从复制原理: 同步过程步骤如下: 从服务器向主服务器发送SYNC命令。 收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。 当主服务器的BGSAVE命令执行完毕,主服务器将生成的RDB文件发送给从服务器,从服务器接收并加载这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令是的数据库状态。 主服务器...

zcx1203的博客 364

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

redis主从复制、哨兵机制和集群

1、复制(master-slave) 配置过程 修改 slave机器的 redis.conf 增加如下配置 slaveof 我这里两台slave 都配置 slaveof 192.168.159.10 6379 重启三台reidis 服务后 启动 执行 ./redis-cli 链接 本机redis 服务 然后执行info replication 可以看到主从状态信息如下 master: [r...

zhangxm_qz的博客 1445

redis主从_Redis主从复制和哨兵机制

1. Redis主从复制1.1 Redis主从复制Redis主从复制主要有两个角色,主机(master)对外提供读写功能,从机(slave)对外只提供读功能,主机定期把数据同步到从机上保证数据一致性。Redis主机数据同步到从机上有两种方式,一种是全量同步,另一种是增量同步。主从复制不会阻塞master,在数据同步时,master还可以继续处理客户端请求,因为redis会产生一个新的进程来解决同步...

weixin_39923945的博客 247

Docker下配置redis的主从复制和哨兵机制

今天来讲如何实现在docker下配置redis的主从复制(读写分离)和哨兵机制,希望能给广大博友带来帮助。 Docker配置redis主从配置 1.拉取docker镜像 docker ps -a 由此可见 只有一个redis 主配置 2.配置两个从配置 docker run -name slave -p 6380:6379 -d redis docker run --name slave1...

小宋的博客 829

Redis主从复制架构和Sentinel哨兵机制

Redis专题地址:https://www.cnblogs.com/hello-shf/category/1615909.html SpringBoot读源码系列:https://www.cnblogs.com/hello-shf/category/1456313.html Elasticsearch系列:https://www.cnblogs.com/hello-shf/category/1...

HuaZi_Myth的博客 207

redis的主从复制和哨兵机制

redis的主从复制和哨兵机制 转载自:https://www.cnblogs.com/leeSmall/p/8398401.html 一、redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一、新增redis6380.conf, 加入 slaveof 192.168.152.128 637...

weixin_42845412的博客 487

关于redis集群的主从复制和哨兵机制的介绍和使用

关于redis集群的主从复制和哨兵机制的介绍和使用!

qq_55961861的博客 184

服务器上Redis主从复制和哨兵机制的配置

一、Redis的安装 1、redis的安装: a、下载redis网址:Redis b、上传redis到linux中,解包:tar-zxfredis-4.0.6.tar.gz -C /usr/local c、切换到解压后的目录cdredis-4.0.6,编译:makeMALLOC=libc d、安装redis:makePREFIX=/usr/local/redis-4.0.6/install 2、修改r...

qq_45278588的博客 696

7_Redis 主从复制和哨兵机制

1.是什么 主机数据更新后根据配置和策略,自动同步到备机的master/slaver 机制,Master以写为主,Slave以读为主 2.能干什么 1.读写分离 2.容灾恢复 3.怎么玩 1.配从(库)不配主(库) 2.从库配置:slaveof 主库ip 主库端口 每次与master断...

Be_nurturing的博客 225
上一篇: Redis的几个数据类型及操作(RedisTemplate和Linux命令)
下一篇: Redis的集群搭建
222you
博客等级 码龄3年 76粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值