Redis主从复制+哨兵模式

news2024/11/17 21:25:02

必读

redis的主从复制是单向的,只能有主节点到从节点,主节点以写为主从节点以读为主不能写入数据!因为系统的80%的需求都是读的需求。

redis服务默认自己是主节点,一个主节点由一个或多个从节点,一个从节点只有一个主节点。

全量复制:redis的从节点挂掉了,当再次连接到主机后,会全量复制主节点的所有数据来保证数据的一致性;
增量复制:当主节点挂掉了,从节点再次连接到重启后的主节点时,主节点存入新的数据,从节点也会存入相同的数据;

查看当前redis信息:

登录redis:

redis-cli -p 6379

在这里插入图片描述
有密码的话执行命令:AUTH 设置的redis的密码

查看主从redis的信息:

 info replication

在这里插入图片描述
role:角色为主节点(默认值)
connected_slaves:连接的从节点数

主从复制配置

我这里有三台服务器,因为redis默认自己是主节点所以在其中任选一台作为主节点,这个服务器的redis不用配置,我们去吧哪两个服务器的redis配置成这个主节点redis的从节点;

在两个从节点服务器连接redis后都执行:

slaveof 8.142.99.94 6379

在这里插入图片描述
slaveof :主从复制的命令
8.142.99.94 :主节点ip
6379 : 主节点redis的端口号

注意:如果主节点redis设置了密码一定要在从节点的配置文件中写上;所有节点的redis密码必须一样
在这里插入图片描述
加上主节点密码后再次连接即可;

在这里插入图片描述
在这里插入图片描述
可以看到两个从节点都连接上了主节点;

在这里插入图片描述
主节点也看到这两个从节点的信息了。

测试:
主节点

在这里插入图片描述
从节点1
在这里插入图片描述
从节点2
在这里插入图片描述
主从复制完成;

哨兵模式

1) 哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
2) 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点挂掉时,哨兵会第一时间感知到,并且在slave节点中重新选出来一个新的master,然后将新的master信息通知给client端,从而实现高可用。这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息
3) Sentinel 哨兵是redis官方提供的高可用方案,它可以用来监听多个redis实例的运行情况.

Sentinel是一个进程我们需要启动它,启动方式和redis一样;

新建一个sentinel文件;
在这里插入图片描述
文件夹中在新建一个conf和log文件夹;

在conf文件夹中创建一个名为sentinel.conf文件;在这里插入图片描述
文件内容:

port 26379
dir "/var/log/sentinel"
logfile "/var/log/sentinel/sentinel-log.log"
# sentine1 monitor关键字
# master 给主从服务器集群起一个名字(监控主服务器,从服务器的信息也就获取了)主服务器的IP和端口
# 2主服务器失效的统计数,超过2票就认为失效
sentinel monitor mymaster 8.142.99.94 6379 1
# 如果主服务器redis有密码就在此设置主节点redis的密码
sentinel auth-pass mymaster 123456789
# 主服务器下线超过30秒就进行切换(默认30S)
#sentinel down-after-milliseconds mymaster 30000

在这里插入图片描述

port:sentinel的端口号(以后就是连接sentinel有sentinel去转发操作redis的命令)
dir : sentinel的工作目录用于生成文件;
logfile :日志文件的目录
sentinel monitor :设置监控的redis主机
mymaster :微监控的主机redis取一个名字 ;
192.168.243.4 : 监控主机的ip
6379 : redis的端口号
1 :有一个sentinel 连接不上主机的redis时认为主机挂掉了,这时就需要故障转移;

启动测试:

docker run -d --name sentinel -v /mydocker/sentinel/conf/sentinel.conf:/conf/sentinel.conf -v /mydocker/sentinel/log:/var/log/sentinel  redis:6.2.6 redis-sentinel /conf/sentinel.conf

1、首先停止主节点redis服务
在这里插入图片描述
可以看到主节点变更了;
在这里插入图片描述
这个从节点的主节点也改成新的主节点了;
在这里插入图片描述
现在重启原先的主节点;
在这里插入图片描述
可以看到自动成为从节点并连接到了新的主节点了;
在这里插入图片描述
连接状是down 是因为没有在redis配置文件中配置主节点redis的连接密码:

 masterauth 123456789

在配置文件中添加以上代码即可:
在这里插入图片描述
重启redis:
在这里插入图片描述
数据同步成功!

我这里在增加两个sentinel(哨兵),分别在这两个新的从机上启动sentinel进程使sentinel也实现高可用!
我这里重新停止了当前的sentinel进程重新在这三台服务器上创建sentinel进程;
按照上面启动sentinel的步骤在这三台服务器上创建即可:
在这里插入图片描述

port 26379
dir "/var/log/sentinel"
logfile "/var/log/sentinel/sentinel-log.log"
# sentine1 monitor关键字
# master 给主从服务器集群起一个名字(监控主服务器,从服务器的信息也就获取了)主服务器的IP和端口
# 2主服务器失效的统计数,超过2票就认为失效
sentinel monitor mymaster 43.143.198.158 6379 2
# 如果主服务器redis有密码就在此设置主节点redis的密码
sentinel auth-pass mymaster 123456789
# 主服务器下线超过10秒就进行切换(默认30S)
#sentinel down-after-milliseconds mymaster 30000

分别这在三台服务器上启动即可:

docker run -d --name sentinel -v /mydocker/sentinel/conf/sentinel.conf:/conf/sentinel.conf -v /mydocker/sentinel/log:/var/log/sentinel  redis:6.2.6 redis-sentinel /conf/sentinel.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到全部成功即可:

springboot配置:

spring:
  redis:
    timeout: 5000
    sentinel:
      master: mymaster
      nodes: 8.142.97.14:26379,43.143.198.158:26379,8.142.99.94:26379

完事!

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

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

相关文章

图信号处理论文

图信号处理并且非图神经网络的论文: Donget.al“GraphSignal Processingfor MachineLearning A Review and New Perspectives," ICASSP Tutorial, June 2021. Lorenzoet.al“Adaptiveleast mean squaresestimation ofgraph signals"IEEE Trans. Signal I…

Vue3 学习笔记 —— 破坏式更新、自定义指令 directive

目录 1. 什么叫破坏式更新? 2. Vue3 中的自定义指令 2.1 自定义指令的生命周期 2.1.1 Vue2 Vs Vue3 的自定义指令生命周期 2.1.2 自定义指令的生命周期中,接收的参数 2.2 定义一个自定义指令 2.2.1 在 setup 中定义自定义指令(此处为 …

数据结构 树练习题

目录 判断 选择 判断 1.一棵有124个结点的完全二叉树,其 叶结点个数是确定的。 【答案】正确 【解析】完全二叉树 若设二叉树的深度为h 除第 h 层外 其它各层 1~(h-1) 的结点数都达到最大个数(即1~(h-1)层为一个满二叉树) 第 h 层所有的结点都连续集…

【C++】STL

文章目录回调函数:一、STL的诞生二、STL基本概念三、STL六大组件四、STL中容器,算法,迭代器回调函数: 函数被作为参数传递到另一个函数(主要函数)的那个函数就叫做 回调函数 一、STL的诞生 C的面向对象和…

DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0

Diagram — JavaScript/HTML5 Diagram Library Ω578867473 破解版DHTMLX Diagram comprises a set of interactive HTML5 UI components such as organization charts, flowcharts, decision trees, block diagrams, mind maps, etc. Consisting of nodes and connectors, di…

i.MX 6ULL 驱动开发 二十八:网络设备

一、网络设备的系统框图 MAC:工作在网络模型的数据链路层,通过 RGMII 或 RMII 接口连接 PHY,MAC 控制器中的 MDIO 控制器提供 MDIO 接口,用于访问 PHY 寄存器。 PHY:工作在网络模型的物理层,是 IEEE802.3 …

SVN项目,提交Git保留之前提交记录

📃目录跳转简介:1.创建文件2.命令下载:3.上传到远程git3.1 创建远程git工程3.2 添加一个新的远程 Git 仓库3.3 拉取远程master的数据合并3.3 推送远程git分支简介: 由于之前直接搞的项目是部署在自己搭建的SVN服务器上,平时创建的…

5. JVM调优工具详解及调优实战(这里有我的实战案例预制构件生产管理平台)

1. Jmap,Jstack,Jinfo命令详解 1.1 Jmap 此命令可以用来查看内存信息,实例个数以及占用内存大小 jps 先查看有哪些java程序 jmap -histo 16492 > ./log.txt jmap -heap 16492 查看堆的信息 查看堆年轻代老年代的使用情况 堆内存dum…

Matlab:tftb-0.2时频工具箱安装小记

Matlab:tftb-0.2时频工具箱安装小记一、安装过程记录1、解压缩:2、将解压缩后的文件夹复制到自己的Matlab安装目录工具箱下;3、打开Matlab设置路径:设置路径4、测试是否安装成功:5、小试牛刀叮嘟!这里是小啊…

【ASE+python学习】-批量识别石墨烯团簇结构中的吡啶氮,并删除与其相连的氢

批量识别石墨烯团簇结构中的吡啶氮,并删除与其相连的氢文章背景任务内容程序实现思路实现代码建立标准结构中边缘碳与氢的位置差值标准数据集读入待修改结构,识别氮与氢位置差值是否存在标准数据集代码细节剖析文章背景 在科研工作中,我的工…

STM32系列(HAL库)——串口IAP

前言 IAP(In Application Programming)即在应用编程,IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 设备具备IAP功能…

javaScript学习———变量概述 变量的使用 变量语法扩展 变量命名规范交换 变量案例

博主每篇博文的浪漫主义: 【东京girl秀场上那些甜度爆表的女孩子们。💖】 https://www.bilibili.com/video/BV1pG411F7KT/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 东京girl秀场上那些甜度爆表的女孩子们。💖…

计算机组成原理--------12.4---------开始

计算机硬件的基本组成 冯诺依曼计算机的特点 冯诺依曼首次提出“存储程序”概念 计算机由五大部件组成:I/O设备(输入输出),存储器(存放数据和程序),运算器(算术运算、逻辑运算&…

[附源码]JAVA毕业设计科研项目审批管理系统(系统+LW)

[附源码]JAVA毕业设计科研项目审批管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

关于解释型语言和编译性语言的区别

关于博主每篇博文的浪漫主义 【初恋是整遍《手写的从前》】 https://www.bilibili.com/video/BV1JP411g7qF/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 初恋是整遍《手写的从前》能够知道解释性语言和编译型语言的特点能够知道标识符不能是关键字…

docker_重装mysql

1.docker ps 查看docker正在运行的容器 2.docker stop xxx 停止正在运行的mysql 3.docker pull mysql:5.7 docker拉取mysql指定版本的镜像 docker pull mysql docker拉取最新版本的镜像 4.docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:…

PHP代码审计系列(一)

PHP代码审计系列&#xff08;一&#xff09; 本系列将收集多个PHP代码安全审计项目从易到难&#xff0c;并加入个人详细的源码解读。此系列将进行持续更新。 extract变量覆盖 源码如下 <?php$flagextractFlag.txt; extract($_GET);if(isset($shiyan)){ $contenttrim(f…

YOLO算法创新改进系列(项目汇总)

&#x1f680;&#x1f680;&#x1f680;——YOLO算法创新改进系列项目汇总——&#x1f384;&#x1f384;&#x1f384; &#x1f680; YOLO算法创新改进系列 &#xff08;项目汇总&#xff09;&#x1f384;&#x1f388; &#x1f340; 改进YOLOv5/YOLOv7——魔改YOLOv5/Y…

文件操作及IO

目录 一、文件的分类 二、文件路径 三、File 常见方法 1、get 相关方法使用 2、文件的创建和删除 3、遍历目录下所有文件 四、文件读写 一、文件的分类 站在程序员的角度&#xff0c;文件通常可以分为两类&#xff1a; 文本文件&#xff1a;以字符形式存储二进制文件&…

Java基于SSM的海淘商城系统

随着计算机网络的普及,电子商务的兴起,网络支付以及网络安全体系逐渐完善,人们的生活进入了网络时代,越来越多的人习惯于乐于网上购物,只需上网轻轻点击鼠标便能够买到心仪商品。 本系统主要是针对广大网络消费者而开发的,专为网络消费者打造,建设一个”全球购”海淘商城系统。…