redis主从复制与哨兵模式

news2024/12/23 0:08:38

redis主从复制

Redis主从复制(Redis replication)是Redis提供的一种数据备份和故障转移机制。通过主从复制,可以将一个Redis服务器(主节点)的数据复制到一个或多个Redis服务器(从节点)。这样做的好处包括:

  1. 数据冗余:从节点作为主节点的数据副本,提供了数据冗余,可以在主节点发生故障时快速恢复数据。
  2. 负载均衡:可以将读操作分散到多个从节点上,减轻主节点的压力,提高整体性能。
  3. 故障转移:在主节点不可用时,可以自动或手动将从节点升级为新的主节点,继续提供服务。

主从复制的配置

Master节点:192.168.20.10
Slave1节点:192.168.20.20
Slave2节点:192.168.20.30
在这里插入图片描述

安装Redis

systemctl stop firewalld.service
setenforce 0
mkdir /usr/local/redis/{conf,log,data}
cd /opt
yum install -y gcc gcc-c++ make
wget  /opt http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xfv redis-5.0.7.tar.gz
cd /opt/redis-5.0.7/
make
make  install
cd utils/
./install_server.sh

在这里插入图片描述
安装完成

配置主服务器

修改主服务器文件
/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行,指定工作目录
appendonly yes						#700行,开启AOF持久化功能

一般只用修改bind 0.0.0.0和appendonly yes ,其他保持默认

/etc/init.d/redis_6379 restart

重启服务
在这里插入图片描述

配置从服务器

修改从服务器配置文件
/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行,指定工作目录		
replicaof 192.168.20.10 6379        #288行,指定要同步的Master节点IP和端口
appendonly yes						#700行,开启AOF持久化功能

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

验证主从效果

在这里插入图片描述

从服务器重启服务

/etc/init.d/redis_6379

在这里插入图片描述
主服务器

tail -f /var/log/redis_6379.log 

或者所有服务器使用

redis-cli info replication

在这里插入图片描述
在这里插入图片描述

可以看到主从复制成功

哨兵模式

Redis哨兵(Redis Sentinel)是一种高可用解决方案,用于监控Redis主服务器和从服务器,并在主服务器不可用时自动将其中一个从服务器提升为新的主服务器。哨兵系统由一组哨兵进程组成,它们相互通信以保持一致性,并监视主服务器和从服务器的状态。

  1. 监控主从状态:哨兵进程定期与主服务器和从服务器通信,以确认它们是否正常运行。
  2. 自动故障转移:如果主服务器不可用,哨兵会自动将一个从服务器提升为新的主服务器,并通知其他从服务器连接到新的主服务器。
  3. 配置提供者:哨兵进程还提供配置信息,例如主服务器地址、从服务器地址等,以便客户端可以连接到新的主服务器。
  4. 手动故障转移:哨兵允许管理员手动指定一个从服务器作为新的主服务器。
  5. 消息通知:哨兵可以配置为在发生故障时通过各种方式(如发送邮件、短信等)通知管理员。
  6. 数据持久化:哨兵可以与Redis的持久化功能一起使用,以实现数据的高可用性和持久性。
    为了实现哨兵模式,需要启动至少三个哨兵进程,并确保它们能够相互通信。

哨兵的工作机制

在Redis哨兵模式中,故障转移(Failover)是指当主服务器不可用时,哨兵进程能够自动将一个从服务器提升为新的主服务器,以保持Redis集群的可用性。以下是Redis哨兵模式中故障转移的步骤:

  1. 监控:哨兵进程不断地监控主服务器和从服务器的运行状态,确保它们都处于正常工作状态。
  2. 心跳检测:哨兵之间以及哨兵与Redis服务器之间通过心跳检测来确认对方的存活状态。
  3. 发现故障:如果主服务器没有在指定的时间内响应心跳,或者主服务器在指定时间内没有与从服务器同步数据,哨兵会认为主服务器发生了故障。
  4. 投票选举:哨兵之间通过通信,对故障的主服务器进行投票,确定哪个从服务器将被提升为新的主服务器。
  5. 故障转移:一旦从服务器被选定,哨兵会向其他从服务器发送命令,将它们指向新的主服务器。
  6. 配置更新:客户端和其他哨兵会更新它们的配置,以指向新的主服务器。
  7. 同步数据:新的主服务器开始与从服务器同步数据,确保它们之间的数据一致性。
  8. 完成故障转移:当新的主服务器与所有从服务器都同步完成后,故障转移完成,Redis集群恢复正常工作。
    在整个故障转移过程中,Redis哨兵会确保数据的一致性和集群的可用性。故障转移通常是自动完成的,但在某些情况下,管理员也可以手动干预,例如在主服务器发生故障时手动选择一个从服务器作为新的主服务器。
    Redis哨兵的故障转移机制是一个高度可靠和自动化的过程,它确保了Redis集群即使在主服务器发生故障的情况下也能继续提供服务,从而保证了系统的稳定性和高可用性。

哨兵模式的搭建

搭建哨兵模式必须先搭建主从模式
1关闭Redis

/etc/init.d/redis_6379

2 修改哨兵模式配置文件

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.20.10 6379 2	#84行,修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置完成

启动哨兵

cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &

查看哨兵信息

redis-cli -p 26379 info Sentinel

在这里插入图片描述
故障模拟

ps -ef | grep redis

关闭主服务器的redis服务

/etc/init.d/redis_6379 stop

在这里插入图片描述
成功

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

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

相关文章

算法设计与分析实验报告java实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、 实验目的 1.加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、排序算法…

ctf_show笔记篇(web入门---jwt)

目录 jwt简介 web345: web346: web347: web348: web349: web350: jwt简介 JSON Web Token(JWT)通常由三部分组成 Header(头部):包含了两部分信息&…

使用 Clickhouse 集成的表引擎同步数据方式详解

Clickhouse作为一个列式存储分析型数据库,提供了很多集成其他组件的表引擎数据同步方案。 官网介绍 一 Kafka 表引擎 使用Clickhouse集成的Kafka表引擎消费Kafka写入Clickhouse表中。 1.1 流程图 1.2 建表 根据上面的流程图需要建立三张表,分别Click…

Jenkins 安装部署

1、安装下载 官网地址:Jenkins 下载 war 包 1、前置环境 JDK 环境(根据 Jenkins 版本不同,需要的 JDK 版本不同,目前需要 JDK11 的版本来支持)Maven maven 官网下载压缩包 ,并将其传输到服务器&#xf…

一、OpenCV(C#版本)环境搭建

一、Visual Studio 创建新项目 二、选择Windows窗体应用(.NET Framework) 直接搜索模板:Windows窗体应用(.NET Framework) 记得是C#哈,别整成VB(Visual Basic)了 PS:若搜索搜不到,直接点击安装多个工具和…

【Linux】线程概念及线程互斥

目录 线程概念 线程优点 线程缺点 线程异常 线程系统编程接口 线程创建及终止 线程等待 使用线程系统接口封装一个小型的C线程库并实现一个抢票逻辑 线程互斥 互斥量的接口 线程互斥实现原理 使用系统加锁接口封装LockGuard 实现自动化加锁 线程安全和可重入函数 …

Win10文件夹共享(有密码的安全共享)(SMB协议共享)

前言 局域网内(无安全问题,比如自己家里wifi)无密码访问,参考之前的操作视频 【电脑文件全平台共享、播放器推荐】手机、电视、平板播放硬盘中的音、视频资源 下面讲解公共网络如办公室网络、咖啡厅网络等等环境下带密码的安全…

探寻马来西亚服务器托管的优势与魅力

随着全球跨境业务的不断增加,境外服务器成为越来越受欢迎的选择。在这其中,马来西亚服务器备受关注,其机房通常位于马来西亚首都吉隆坡。对于客户群体主要分布在东南亚、澳大利亚和新西兰等地区的用户来说,马来西亚服务器是一个理…

【opencv】教程代码 —ml (主成分分析、支持向量机、非线性支持向量机)

1. introduction_to_pca.cpp 主成分分析 /*** file introduction_to_pca.cpp* brief 这个程序演示了如何使用OpenCV PCA 提取物体的方向* author OpenCV团队*/// 包含OpenCV函数库所需要的头文件 #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp&q…

JVM专题——内存结构

本文部分内容节选自Java Guide和《深入理解Java虚拟机》, Java Guide地址: https://javaguide.cn/java/jvm/memory-area.html 🚀 基础(上) → 🚀 基础(中) → 🚀基础(下)…

Neo4j数据库(一)

目录 新建节点 Neo4j CQL创建具有属性的节点 多个标签到节点 单个标签到关系 MATCH命令 RETURN命令: Neo4j CQL - MATCH & RETURN匹配和返回 总结:本文介绍了Neo4j的CREATE,MATCH,RETURN的基本操作 新建节点 Neo4j创建一…

Coursera上托福专项课程02:TOEFL Speaking and Writing Sections Skills Mastery 学习笔记

TOEFL Speaking and Writing Sections Skills Mastery Course Certificate 本文是学习 https://www.coursera.org/learn/toefl-speaking-writing-sections-skills-mastery 这门课的学习笔记,如有侵权,请联系删除。 文章目录 TOEFL Speaking and Writing…

Unity 代码控制播放序列帧动画的实现

在Unity中有些应用场景的动画是通过序列帧实现的。 如下图即为一个英雄攻击的一个动画: 那么如何实现该序列帧动画的播放呢,我们可以通过代码来控制播放。 1、把以上序列帧导入编辑器中,并修改图片属性,如下图所示,其…

三菱上升沿和下降沿

1,上升沿 含义 上升沿是在接通的第一个周期执行。 2,下将沿 断开的第一个周期执行 M0 按下后Y0 亮 M1 松开后Y0灭

Docker 安装 Linux 系统可视化监控 Netdata

docker 安装 netdata 前提准备Docker 两种方式部署 Netdata1、使用 docker run 命令运行 netdata 服务2、使用 docker compose 运行 netdata 服务 Netdata 服务可视化界面Netdata 汉化处理 前提准备 说明:此处使用 windows11 安装的 docker desktop & wsl2/apli…

2. 如何让mybatis-plus的逻辑删除注解@TableLogic临时失效

文章目录 如何让mybatis-plus的逻辑删除注解TableLogic临时失效1. 场景复现1.1 controller代码1.2 service层代码1.3 entity代码 2. 问题分析3. 解决方案3.1 说明3.2 核心代码3.3 service方法对应修改为3.4 运行结果 如何让mybatis-plus的逻辑删除注解TableLogic临时失效 1. 场…

python-基础篇-字符串、列表、元祖、字典-列表

文章目录 2.3.2列表2.3.2.1列表介绍2.3.2.1.1列表的格式2.3.2.1.2打印列表 2.3.2.2列表的增删改查2.3.2.2.1列表的遍历2.3.2.2.1.1使用for循环2.3.2.2.1.2使用while循环 2.3.2.2.2添加元素("增"append, extend, insert)2.3.2.2.2.1append 2.3.2.2.2.2extend2.3.2.2.2…

路由策略与路由控制之双点双向重发布(OSPF-ISIS)实验

双点双向重发布在路由协议中,特别是在OSPF(开放式最短路径优先)与IS-IS(中间系统到中间系统)等协议之间,指的是在两个协议间或者两个进程间进行路由信息共享的机制。这种机制涉及到在两个不同的协议区域使用…

回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测

回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测 目录 回归预测 | Matlab基于CPO-GPR基于冠豪猪算法优化高斯过程回归的多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于CPO-GPR基于冠豪猪算法优化高斯…

java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入…