【Redis】集群配置(主从复制 哨兵搭建)

文章目录

    • 集群配置
      • 主从复制
      • 哨兵搭建

集群配置

Redis 集群提供了三种分布式方案:

主从模式:一个主节点和一个或多个从节点,主节点负责写操作,从节点负责读操作,实现读写分离,分担主节点的压力。

哨兵模式:哨兵系统用于监控多个Redis服务器,当主服务器出现问题时,哨兵会自动进行故障迁移,选举一个新的主服务器。

集群模式:Redis Cluster 通过将键空间分割为16384个槽位,每个主节点负责一部分槽位,实现数据的分布式存储和高可用性。

主从复制

主从复制是将一台 Redis 服务器的数据复制到其他 Redis 服务器,前者叫 master/leader 主节点,后者称为从节点 slave/follower,数据库的复制是单向的,只能由主–>从,master 以写为主,slave 以读为主,利用主从复制实现读写分离,最低配的主从复制也需要一主二从。

主从复制中,从节点只能进行读操作,如果在从节点执行写命令则会报错,主节点可以执行读写操作,但我们往往规定主节点只能进行写操作,这样也是符合了读写分离;默认情况下每个 Redis 服务器都为主节点,即 master。

主从复制的作用

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

在这里插入图片描述

(一主二从)

1、分别命名 Redis6379、Redis6380、Redis6381,以 Redis6379 为主机,Redis6380、Redis6381为从机

在这里插入图片描述

2、修改主机和从机的 redis.windows.conf 文件

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

分别在 41 行左右修改端口为 port 6379port 6380port 6381

# The filename where to dump the DB
dbfilename dump.rdb

分别在 172 行左右修改 RDB 文件为 dump.rdbdump6380.rdbdump6380.rdb(要保证这三个文件名不一样)

3、修改从机的 redis.windows.conf 文件

# slaveof <masterip> <masterport>

slaveof 127.0.0.1 6379

# masterauth <master-password>

masterauth "123456"

分别在 200 行左右添加主机 ip、端口和密码。两个从机都要添加。

4、启动主机

在这里插入图片描述

再启动从机

在这里插入图片描述

该图中上面的窗口是主机 6379 的,下面的窗口是从机 6380 的。

在这里插入图片描述

该图中上面的窗口是主机 6379 的,下面的窗口是从机 6381 的。

打开 Another Redis Desktop Manager.exe 工具。

分别连接 6380 和 6381,记得输入密码。因为 6380 和 6381 都是复制的 6379, 所以密码都是 123456(该设置在 redis.windows.conf 文件大概 389 行:requirepass 123456

在这里插入图片描述

使用命令:info replication 获取复制状态信息。

在这里插入图片描述

主机显示为 role:master,表示它是主节点。还会列出所有连接的从机及其状态、端口等信息。

在这里插入图片描述

从机显示为 role:slave,表示它是从节点。还会列出主机的IP地址、端口号以及与主机的连接状态等。

复制的过程原理

  1. 当从库和主库建立 MS 关系后,会向主数据库发送 SYNC 命令;
  2. 主库接收到 SYNC 命令后会开始在后台保存快照(RDB 持久化过程),并将期间接收到的写命令缓存起来;
  3. 当快照完成后,主 Redis 会将快照文件和所有缓存的写命令发送给从 Redis;
  4. 从 Redis 接收到后,会载入快照文件并且执行收到的缓存的命令;
  5. 之后,主 Redis 每当接收到写命令时就会将命令发送从 Redis,从而保证数据的一致;

哨兵搭建

哨兵的作用就是对 Redis 的系统的运行情况的监控,它是一个独立进程。它的功能有两个:

  1. 监控主数据库和从数据库是否运行正常;
  2. 主数据出现故障后自动将从数据库转化为主数据库;

哨兵模式(Sentinel)是 Redis 数据库提供的一种高可用性解决方案,旨在自动处理主节点故障转移的过程。在哨兵模式被引入之前,Redis 的主从复制架构在遇到主服务器(master)宕机的情况下,需要人工介入来进行故障恢复。通过在从服务器上执行 SLAVEOF NO ONE 命令来实现将从服务器(slave)提升为新的主服务器。

然而,这种手动的主从切换过程存在明显缺陷。Redis 从2.8版本开始正式引入了哨兵(Sentinel)系统。哨兵是一个独立运行的监控进程,其工作原理是通过定期向 Redis 服务器发送命令并监听响应,以此来监控多个 Redis 实例的状态。

单个哨兵的架构
在这里插入图片描述

多个哨兵的架构

在这里插入图片描述

多个哨兵不仅同时监控主从数据库,而且哨兵之间互为监控。

(一主二从三哨兵)

1、在每个 Redis 文件夹下创建 sentinel.conf 文件配置哨兵信息

# 哨兵sentinel实例运行的端口 默认26379
port 26379

# 本地ip
bind 127.0.0.1

# 哨兵监听的主服务器 后面的1表示主机挂掉以后进行投票,只需要2票就可以从机变主机
sentinel monitor mymaster 127.0.0.1 6379 2

# 设置未得到主机响应时间,此处代表5秒未响应视为宕机
sentinel down-after-milliseconds mymaster 5000

# 设置等待主机活动时间,此处代表5秒主机未活动,则重新选举主机
sentinel failover-timeout mymaster 5000

# 设置主机的密码(无密码可以省略)
sentinel auth-pass mymaster 123456
#设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数据,直到所从
#机同步结束
sentinel config-epoch mymaster 2

# 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步
sentinel leader-epoch mymaster 2

分别修改三个 Redis 的哨兵端口为 port 26379port 26380port 26381,其余不用修改。

2、在每个 Redis 文件夹下创建 startup_sentinel.bat 文件用于运行 sentinel.conf

记事本打开 bat 文件文件,写入内容 redis-server.exe sentinel.conf --sentinel

运行 Redis 三个服务,并使用 info replication 命令检查是否主从复制。

哨兵测试

从机宕机

使用命令 shutdown 关闭一个从机(或直接关闭)

6380 宕机

[12752] 17 Dec 16:39:00.416 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
[12752] 17 Dec 16:39:05.806 # +sdown sentinel 127.0.0.1:26379 127.0.0.1 26379 @ mymaster 127.0.0.1 6379

6380 启动

[22196] 17 Dec 16:39:06.085 # +sdown sentinel 127.0.0.1:26379 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
[22196] 17 Dec 16:40:41.190 * +reboot slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
[22196] 17 Dec 16:40:41.267 # -sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379

主机宕机

使用命令 shutdown 关闭一个从机(或直接关闭)

会发现哨兵在连接几次 63790 失败后,选取 6380 做为主机。redis.windows.conf 文件中的配置信息会自动改变。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“AI人工智能软件开发公司:创新技术,引领未来

大家好&#xff01;今天我们来聊聊一个充满未来感的话题——AI人工智能软件开发公司。这个公司&#xff0c;用大白话说&#xff0c;就是专门研究和开发人工智能软件的地方&#xff0c;它们用最新的技术帮我们解决问题&#xff0c;让生活和工作变得更智能、更便捷。听起来是不是…

智能客户服务:科技如何重塑客户服务体验

在数字化时代&#xff0c;客户对于服务的需求和期望在不断演变。传统的客户服务模式已经难以满足现代消费者对于即时性、个性化和高效性的追求。随着人工智能、大数据、云计算等先进技术的蓬勃发展&#xff0c;智能客户服务应运而生&#xff0c;不仅重塑了客户服务的体验&#…

AI 驱动研发模式升级,蓝凌软件探索效率提升之道

深圳市蓝凌软件股份有限公司&#xff08;以下简称蓝凌软件&#xff09;&#xff0c;自2001年成立以来&#xff0c;一直走在数智化办公领域的前沿。作为国家认定的高新技术企业、知识管理国家标准的参编者以及信创供应商10强之一&#xff0c;蓝凌软件始终以“让组织更智慧”为使…

【leetcode100】二叉树的中序遍历

1、题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 2、初始思路 2.1 思路 中序遍历的顺序是左→根→右&#xff0c;定义一个函数进行遍历 # Definition for …

折旧后将成本中心折旧费调整到订单中

背景&#xff1a;设备原作为通用设备&#xff0c;按成本中心折旧&#xff0c;在12月月结正常折旧后才明确为专用设备&#xff0c;需要按内部订单折旧。 问&#xff1a;折旧能不能冲销。 回复&#xff1a; 在SAP中&#xff0c;折旧凭证是无法直接冲销的。如果折旧计提有误&#…

YOLO11改进 | 卷积模块 | ECCV2024 小波卷积

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文给大家带来的教程是将YOLO11的Conv替…

Vue 3.0 中封装icon组件使用外部SVG图标

通常在企业级项目开发时&#xff0c;所使用的 icon 图标&#xff0c;一共分为两类&#xff1a; 1. element-plus 的图标 2. 自定义的 svg 图标 对于 element-plus 的图标我们可以直接通过 el-icon 来进行显示&#xff0c;但是自定义图标的话却无法正常显示&#xff0c;所以就…

MySQL数据库笔记——多版本并发控制MVCC

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;本文详细介绍MySQL的并发控制&#xff1a;多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…

PDF怎么压缩得又小又清晰?5种PDF压缩方法

PDF 文件在日常办公与学习中使用极为频繁&#xff0c;可想要把它压缩得又小又清晰却困难重重。一方面&#xff0c;PDF 格式本身具有高度兼容性&#xff0c;集成了文字、图像、矢量图等多样元素&#xff0c;压缩时难以兼顾不同元素特性&#xff0c;稍不注意&#xff0c;文字就会…

面向机器学习的Java库与平台

学习Java语言中与机器学习相关的各种库与平台&#xff0c;了解每个库的功能&#xff0c;以及可以用它 们解决的问题。  实现机器学习应用时需要具备的Java环境  Weka&#xff1a;一个通用的机器学习平台  Java机器学习库&#xff1a;一系列机器学习算法  Apache Mah…

前端CSS3学习

学习菜鸟教程 火狐-moz- 谷歌 Safari -webkit- 前面都加这个&#xff0c;可能才生效 边框 border: 1px solid #ddd 粗细 样式 样色 经常和border-radius 一块用 border-radius: 50px 20px 第一个左右 第二个右左 border-top-left-radius … box-shadow: 10px 5px 10px 0 #88…

【LoRa】长交织Long Interleaver

目录 1 前言2 CR与长交织3 小结 1 前言 在使用Semtech的第三代LoRa芯片&#xff08;LR11xx系列&#xff09;配置参数时&#xff0c;可能会注意到参数CR多出了Long Interleaver参数选项&#xff0c;截取lr11xx_driver代码片段如下&#xff1a; /*!brief LoRa Coding Rate conf…

HAL 库------中断相关函数

HAL_SuspendTick();是对SysTick中CTRL寄存器中TICKINT位清0 HAL_ResumeTick(); 刚好与上面函数相反&#xff0c;对SysTick中CTRL寄存器中TICKINT位置1&#xff0c;恢复stick中断。

IntelliJ Idea常用快捷键详解

文章目录 IntelliJ Idea常用快捷键详解一、引言二、文本编辑与导航1、文本编辑2、代码折叠与展开 三、运行和调试四、代码编辑1、代码补全 五、重构与优化1、重构 六、使用示例代码注释示例代码补全示例 七、总结 IntelliJ Idea常用快捷键详解 一、引言 在Java开发中&#xff…

RabbitMQ端口操作

1、什么是RabbitMQ RabbitMQ 是一种可靠且成熟的消息传递和流式处理代理&#xff0c;易于部署在云环境、本地和本地计算机上。目前&#xff0c;全球有数百万人在使用它。 RabbitMQActiveMQRocketMQKafka公司/社区RabbitApache阿里Apache开发语言ErlangJavaJavaScala&Java…

设计模式 创建型 建造者模式(Builder Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;&#xff0c;又称生成器模式&#xff0c;是一种对象构建模式。它主要用于构建复杂对象&#xff0c;通过将复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建出具有不同表示的对象。该模式的核心思想是将…

2、pycharm常用快捷命令和配置【持续更新中】

1、常用快捷命令 Ctrl / 行注释/取消行注释 Ctrl Alt L 代码格式化 Ctrl Alt I 自动缩进 Tab / Shift Tab 缩进、不缩进当前行 Ctrl N 跳转到类 Ctrl 鼠标点击方法 可以跳转到方法所在的类 2、使用pip命令安装request库 命令&#xff1a;pip install requests 安装好了…

jenkins修改端口以及开机自启

修改Jenkins端口 方式一&#xff1a;通过配置文件修改&#xff08;以CentOS为例&#xff09; 找到配置文件&#xff1a;在CentOS系统中&#xff0c;通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件&#xff0c;也可以查看/etc/default/jenkins&…

破解密码

rhel8/centos8 重置 root 密码 方法 1 &#xff1a; rd.break 第 1 步 重启系统&#xff0c;在下图所示界面按 e 键 第2步 找到linux这行&#xff0c;末尾空格后 输入 rd.break 第3步 查看&#xff0c;可选步骤 这里 sysroot 是以只读的形式挂载的&#xff0c;所以要以可读可…

时间序列预测算法---LSTM

目录 一、前言1.1、深度学习时间序列一般是几维数据&#xff1f;每个维度的名字是什么&#xff1f;通常代表什么含义&#xff1f;1.2、为什么机器学习/深度学习算法无法处理时间序列数据?1.3、RNN(循环神经网络)处理时间序列数据的思路&#xff1f;1.4、RNN存在哪些问题? 二、…