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

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

目录

  • 第一章、主从复制模式
    • 1.1)Redis 主从复制模式介绍
    • 1.2)Redis 主从复制实现、
  • 第二章、哨兵机制
    • 2.1)容灾处理之哨兵
    • 2.2)Sentinel 配置

第一章、主从复制模式

1.1)Redis 主从复制模式介绍

①单点故障:数据存储在一台服务器上,服务器出现故障就会导致数据丢失。所以我们需要将数据复制多份部署在多台不同的服务器上,在配置文件中指定这几台 redis 之间的主从关系。

②主从复制:多台 redis 服务器的数据同步功能,主服务器(master)负责写入数据,同时把写入的数据实时同步到从(slave )机器,从服务器负责读
当 Master 服务出现故障,需手动将 slave 中的一个提升为 master, 剩下的 slave 挂至新的master 上(冷处理:机器挂掉了,再处理)

1.2)Redis 主从复制实现、

修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制的关系
①如果 Redis 启动,先停止,模拟多 Reids 服务器,从原有的 redis.conf 配置文件中拷贝三份,分别命名为 redis6380.conf, redis6382.conf , redis6384.conf
在这里插入图片描述
②编辑作为 Master 的配置文件 redis6380.conf : 在空文件加入如下内容

#包含原来的配置文件内容。/usr/local/redis-3.2.9/redis.conf 按照自己的目录设置。
include /usr/local/redis-3.2.9/redis.conf daemonize yes port 6380 
pidfile /var/run/redis_6380.pid 
logfile 6380.log 
dbfilename dump6380.rdb 

配置项说明:
include :包含原来的配置文件内容。/usr/local/redis-3.2.9/redis.conf 按照自己的目录设置。
daemonize:yes 后台启动应用,相当于 ./redis-server & , &的作用。
port : 自定义的端口号
pidfile : 自定义的文件,表示当前程序的 pid ,进程 id。
logfile:日志文件名
dbfilename:持久化的 rdb 文件
③编辑作为 Slave服务器的配置文件redis6382.conf 和 redis6384.conf: 在空文件加入如下内容

#①:redis6382.conf中加入: 
include /usr/local/redis-3.2.9/redis.conf daemonize yes port 6382 
pidfile /var/run/redis_6382.pid 
logfile 6382.log 
dbfilename dump6382.rdb 
slaveof 127.0.0.1 6380 
#②:redis6384.conf中加入: 
include /usr/local/redis-3.2.9/redis.conf daemonize yes port 6384 
pidfile /var/run/redis_6384.pid 
logfile 6384.log 
bfilename dump6384.rdb 
slaveof 127.0.0.1 6380 

配置项说明: slaveof : 表示当前 Redis 是谁的从。当前是 127.0.0.1 端口 6380 这个 Master 的从服务器。

④使用配置文件方式启动redis,并查看启动进程
在这里插入图片描述
⑤使用指定端口连接 Redis 服务器,查看配置后的服务信息

./redis-cli -p 端口

在这里插入图片描述
查看6380端口的服务器信息

info replication 

在这里插入图片描述
在新的 Xshell 窗口分别登录到 6382 ,6384 查看信息
在这里插入图片描述
⑥向 Master 写入数据,先执行 flushall 清除数据,避免干扰到测试数据。 生产环境谨慎使用。
在这里插入图片描述
⑦在从服务器 Slave 读数据,可以读主 Master 的数据,不能写
在这里插入图片描述
Slave 写数据失败
在这里插入图片描述

第二章、哨兵机制

2.1)容灾处理之哨兵

Sentinel 哨兵是 redis 官方提供的高可用方案,监控多个 Redis 服务实例的运行情况。
Sentinel 系统是一个运行在特殊模式下的 Redis 服务器。Redis Sentinel 是在多个 Sentinel 进程环境下互相协作工作的。

Sentinel 系统有三个主要任务:
①监控:Sentinel 不断的检查主服务和从服务器是否按照预期正常工作。
提醒:被监控的 Redis 出现问题时,Sentinel 会通知管理员或其他应用程序。
②自动故障转移:监控的主 Redis 不能正常工作,Sentinel 会开始进行故障③迁移操作。将一个从服务器升级新的主服务器。 让其他从服务器挂到新的主服务器。同时向客户端提供新的主服务器地址。
在这里插入图片描述

2.2)Sentinel 配置

①复制三份sentinel.conf文件
在这里插入图片描述
Sentinel系统默认 port 是26379 。三个配置port分别设置为 26380 , 26382 , 26384 。三个文件分别命名:
sentinel26380.conf
sentinel26382.conf
sentinel26384.conf
执行复制命令 cp sentinel.conf xxx.conf
在这里插入图片描述
②三份 sentinel 配置文件修改
sentinel26380.conf
1、修改 port
在这里插入图片描述
2、修改监控的 master 地址 6382
在这里插入图片描述
sentinel26382.conf 文件同样修改
port 26382
master的port :6382
sentinel26384.conf 文件同样修改
port 26384
master的port :6382

③启动主从(Master/Slave)Redis
启动 Reids
在这里插入图片描述
查看 Master 的配置信息连接到 6382 端口
在这里插入图片描述
使用 info 命令查看 Master/Slave
在这里插入图片描述
④启动 Sentinel模式下的Redis服务实例

在 XShell 开启三个窗口分别执行命令,将创建三个监视主服务器的Sentinel实例:
./redis-sentinel …/sentinel26380.conf
./redis-sentinel …/sentinel26382.conf
./redis-sentinel …/sentinel26384.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
⑤让主 Redis 不能工作

让 Master 的 Redis 停止服务, 先执行 info replication 确认 Master 的 Redis 后再执行 shutdown

在这里插入图片描述
查看当前 Redis 的进程情况

在这里插入图片描述
⑥Sentinel 的起作用

在 Master 执行 shutdown 后, 稍微等一会 Sentinel 要进行投票计算,从可用的 Slave
选举新的 Master。查看 Sentinel 日志。
在这里插入图片描述
查看新的 Master
在这里插入图片描述
查看原 Slave 的变化

在这里插入图片描述
⑦新的 Redis 加入 Sentinel 系统,自动加入 Master

重新启动 6382
在这里插入图片描述
查看 6384 的信息
在这里插入图片描述
测试数据:在 Master 写入数据
在这里插入图片描述
在 6382 上读取数据,不能写入
在这里插入图片描述

⑧监控
1)Sentinel 会不断检查 Master 和 Slave 是否正常
2)如果 Sentinel 挂了,就无法监控,所以需要多个哨兵,组成 Sentinel 网络,一个健康的
Sentinel 至少有 3 个 Sentinel 应用。 彼此在独立的物理机器或虚拟机。
3)监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel 网络,互相通信并交换彼此关于被监控服务器的信息
4)当一个 Sentinel 认为被监控的服务器已经下线时,它会向网络中的其它 Sentinel 进行确认,判断该服务器是否真的已经下线
5)如果下线的服务器为主服务器,那么 Sentinel 网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态
6)下线的旧主服务器重新上线,Sentinel 会让它成为从,挂到新的主服务器下

相关文章:

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

目录 第一章、主从复制模式1.1)Redis 主从复制模式介绍1.2)Redis 主从复制实现、 第二章、哨兵机制2.1)容灾处理之哨兵2.2)Sentinel 配置 第一章、主从复制模式 1.1)Redis 主从复制模式介绍 ①单点故障:数…...

WebStorm:Mac/Win上强大的JavaScript开发工具

WebStorm是JetBrains公司开发的针对Mac和Windows系统的JavaScript开发工具。它为开发者提供了一站式的代码编辑、调试、测试和版本控制等功能,帮助你更高效地进行Web开发。新版本的WebStorm 2023在性能和用户体验方面都做出了重大改进,让你的JavaScript开…...

传世SUN引擎如何安装

大家在搭建的时候一定要理清思路一步一步来,否则一步错步步错。下面跟大家说一下搭建的顺序以及细节。 第一步:首先下载DBC2000进行安装,并按照里面的说明设置好。1、请把压缩包释放到D:\QMirServer目录下。2、在控制面板里找到BDC Administ…...

vue 生命周期

什么是生命周期,有什么作用 定义:vue 实例从创建到销毁的过程,在某个特定的位置会触发一个回调函数 作用:供开发者在生命周期的特定阶段执行相关的操作 生命周期分别有几个阶段 有四个阶段,每个阶段有两个钩子&…...

多开工具对应用程序性能的影响与优化

多开工具对应用程序性能的影响与优化 摘要: 随着计算机技术的不断发展,多开工具逐渐成为一种常见的软件应用。然而,使用多开工具可能会对应用程序的性能产生一定的影响。本文将探讨多开工具对应用程序性能的影响,并提供一些优化方…...

G1 GC基本逻辑

1 MixedGC基本过程 在G1GC中,有两种主要的垃圾回收过程:Young GC和Mixed GC。这两者都是为了回收堆内存中的垃圾对象,但是他们关注的区域和工作方式有所不同。 Young GC: Young GC主要负责回收Young Generation(包括…...

nvidia安装出现7-zip crc error解决办法

解决办法:下载network版本,重新安装。(选择自己需要的版本) 网址:CUDA Toolkit 12.3 Update 1 Downloads | NVIDIA Developer 分析原因:local版本的安装包可能在下载过程中出现损坏。 本人尝试过全网说的…...

(C语言实现)高精度除法 (洛谷 P2005 A/B Problem II)

前言 本期我们分享用C语言实现高精度除法,可通过该题测试点我点我,洛谷 p2005。 那么话不多说我们开始吧。 讲解 大家还记不记得小学的时候我们是怎么做除法的?我们以1115为例。 我们的高精度除法也将采用这个思路进行,分别用两…...

【AI】Windows环境安装GroundingDINO

Grounding DINO简单来说,它可以根据文字描述检测指定目标。此外,当Grounding DINO与stable diffusion结合,便可以实现更神奇的功能–自动P图。在专业领域中,GroundingDINO可以用来进行遥感影像解译,可以减少人工工作量…...

【Node.js】基础梳理 6 - MongoDB

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…...

.NET8 依赖注入

依赖注入(Dependency Injection,简称DI)是一种设计模式,用于解耦组件(服务)之间的依赖关系。它通过将依赖关系的创建和管理交给外部容器来实现,而不是在组件(服务)内部直…...

Ubuntu18安装(重启黑屏问题)

1. F10 进入bios,选择u盘里的ubuntu镜像 2.进入使用ubuntu,下载 3.重启,esc 4.ubuntu 安e进入 5. nomodeset() F10 保存启动 6. 7.没有网 手机usb提供网络 下载有限网卡驱动...

[PyTorch][chapter 4][李宏毅深度学习][Gradient Descent]

前言: 目录: 1: 梯度下降原理 2: 常见问题 3: 梯度更新方案 4: 梯度下降限制 一 梯度下降原理 机器学习的目标找到最优的参数,使得Loss 最小 为什么顺着梯度方向loss 就能下降了。主要原理是泰勒公式。 假设损失函数为 忽略二阶导数, 当 …...

利用proteus实现串口助手和arduino Mega 2560的串口通信

本例用到的proteus版本为8.13,ardunio IDE版本为2.2.1,虚拟串口vspd版本为7.2,串口助手SSCOM V5.13.1。软件的下载安装有很多教程,大家可以自行搜索,本文只介绍如何利用这4种软件在proteus中实现arduino Mega 2560的串…...

Web APIs—介绍、获取DOM对象、操作元素内容、综合案例—年会抽奖案例、操作元素属性、间歇函数、综合案例—轮播图定时器版

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录复习变量声明 Web APIs - 第1天笔记介绍概念DOM 树DOM 节点document 获取DOM对象案例— 控制台依次输出3个li的DOM对象 操作元素内容综合案例——年会抽奖案例操作元素属性常用属性修改…...

题目:分糖果(蓝桥OJ 2928)

题目描述&#xff1a; 解题思路&#xff1a; 本题采用贪心思想 图解 题解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e6 9; char s[N];//写字符串数组的一种方法,像数组一样***int main() {int n, x;cin >> n >> x;for(int …...

Leetcode刷题笔记——摩尔投票法

摩尔投票法的核心思想为对拼消耗。 摩你妈&#xff0c;学不会&#xff01;&#xff01;&#xff01;&#xff01; 229. 多数元素 II - 力扣&#xff08;LeetCode&#xff09;...

RabbitMq整合Springboot超全实战案例+图文演示+源码自取

目录 介绍 简单整合 简单模式 定义 代码示例 work模式 定义 代码示例 pubsub模式 定义 代码示例 routing模式 定义 代码示例 top模式 定义 代码 下单付款加积分示例 介绍 代码 可靠性投递示例 介绍 代码 交换机投递确认回调 队列投递确认回调 ​延迟消…...

10-Hadoop组件开发技术

单选题 题目1&#xff1a;下列选项描述错误的是&#xff1f; 选项: A Hadoop HA即集群中包含Secondary NameNode作为备份节点存在。 B ResourceManager负责的是整个Yarn集群资源的监控、分配和管理工作 C NodeManager负责定时的向ResourceManager汇报所在节点的资源使用情况…...

postman参数为D:\\audio\\test.mp3请求报错

报错信息 报错 java.lang.IllegalArgumentException: Invalid character found in the request target [/v1/audio/transcriptions?audioPathD:\\audio\\test.mp3 ]. The valid characters are defined in RFC 7230 and RFC 3986 解决方式 yml文件上放行指定字符 relaxed-pa…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...