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

Redis(08)主从复制master-slave replication

文章目录

  • redis主从复制
    • 一. 配置文件的方式设置
      • 1. 主节点配置:
      • 2. 从节点1配置:
      • 3. 从节点2配置:
    • 二. 命令的方式设置
      • 1. 创建服务
      • 2. 设置主从节点
      • 3. 测试
    • 三. 从节点升级为主节点
    • 四. 查看主从关系

redis主从复制

Redis主从复制是将一个Redis实例的数据复制到多个Redis实例,以实现读写分离、负载均衡、故障转移等功能。在主从复制架构中,一个Redis实例作为主节点,其他Redis实例作为从节点,从节点会自动复制主节点的数据,当主节点发生故障时,从节点会自动选举一个新的主节点,确保系统的高可用性。

使用Redis主从复制可以提高系统的可靠性和性能,同时也可以提供灵活的扩展方案,满足不同的业务需求。

一. 配置文件的方式设置

Redis主从复制中,一个主节点可以有多个从节点。要配置主从复制,需要修改主节点和从节点的redis.conf配置文件。

1. 主节点配置:

bind 0.0.0.0      # 监听所有接口
protected-mode no # 取消保护模式
port 6379          # 端口
daemonize yes     # 后台运行 # 主节点配置
masterauth masterpassword     # 设置主从连接密码
requirepass password         # 设置访问密码appendonly yes   # 开启AOF持久化

2. 从节点1配置:

bind 0.0.0.0 
protected-mode no
port 6380
daemonize yes# 从节点1配置 
slaveof 127.0.0.1 6379   # 设置主节点地址和端口
masterauth masterpassword # 设置主从连接密码(6379.conf中的密码)
requirepass password      # 设置访问密码   (6379.conf中的密码)appendonly yes

3. 从节点2配置:

bind 0.0.0.0
protected-mode no   port 6381
daemonize yes   # 从节点配置
#slaveof 127.0.0.1 6379
slaveof <master-ip> <master-port>  # 设置主节点信息
masterauth <master-password>       # 设置主从连接密码(6379.conf中的密码)
requirepass <require-password>     # 设置访问密码    (6379.conf中的密码)appendonly yes                  # 开启AOF持久化

说明:

  1. 主从节点的端口、密码等信息不能更改,否则主从关系无法自动重建。
  2. requirepass是访问Redis的密码,masterauth是Sentinel和从节点连接主节点的密码。
  3. appendonly yes打开AOF持久化,实现数据强一致性。
  4. 多个从节点可以连接同一个主节点,实现读扩展。
  5. 如果主节点下线,可以手动将某个从节点升级为主节点(需要关闭从节点的slaveof配置),其他从节点重新配置从新的主节点同步数据。

启动各节点后,使用redis-cli -h 127.0.0.1 -p 6379 -a password 等命令就可以连接主节点进行读写操作。从节点只读。

如果想实现自动主备切换,可以使用Redis Sentinel解决方案。配置sentinel.conf,启动多个Sentinel监控主从节点,一旦主节点故障,Sentinel会自动将从节点选举为主节点,实现故障转移。

二. 命令的方式设置

1. 创建服务

创建三个redis-server服务实例

./install_server.sh    指定一个端口号为6379    主节点
./install_server.sh    指定一个端口号为6380    从节点
./install_server.sh    指定一个端口号为6381    从节点

2. 设置主从节点

使用命令的方式设置主从节点

在从节点的客户端中执行如下命令即可设置当前节点为从节点,连接主节点的地址和端口号:

REPLICAOF 127.0.0.1 6379

6381客户端

[root@bogon src]# ./redis-cli -p 6381
127.0.0.1:6381> REPLICAOF 127.0.0.1 6379
OK Already connected to specified master
127.0.0.1:6381>

6380也一样

[root@bogon src]# ./redis-cli -p 6380
127.0.0.1:6380> REPLICAOF 127.0.0.1 6379
OK Already connected to specified master
127.0.0.1:6380>

3. 测试

如果从节点突然挂掉了,可以重新恢复

6381客户端执行:shutdown

127.0.0.1:6381> shutdown

启动服务

redis-server /etc/redis/6381.conf   REPLICAOF 127.0.0.1 6379

4,如果主节点突然挂掉了,可以将从节点提升为主节点

在从节点的客户端连接中执行如下命令:
REPLICAOF  no  one   #此时从节点变为主节点,其他从节点需要重新连接到新的主节点

三. 从节点升级为主节点

在Redis主从复制中,如果主节点下线,可以通过以下两种方式让从节点自动升级为主节点:

  1. 配置slave-serve-stale-data在从节点的redis.conf配置文件中,设置slave-serve-stale-data为yes:
slave-serve-stale-data yes 

这意味着在主从连接断开的情况下,从节点可以继续响应客户端请求。原主节点重新上线后,主从关系将重建,从节点将从主节点同步最新数据。

启用该配置后,一旦主从连接断开,从节点将自动成为“临时主节点”,继续提供服务,实现高可用。

  1. 使用Redis Sentinel

    Redis Sentinel是Redis官方推出的高可用性解决方案。它可以监控主从节点,一旦检测到主节点故障,将自动将一个从节点升级为主节点,实现自动主节点故障转移。使用Sentinel,需要以下几步:

    1. 安装并配置多个Sentinel实例(至少2个)
    2. 向Sentinels指定主节点和从节点信息
    3. Sentinels监控主从节点运行状态
    4. 主节点下线时,Sentinels通过投票协议选择一个从节点升级为主节点
    5. 新主节点上线,Sentinels自动将其它从节点指向新主节点
    6. 旧主节点再次上线时,将变为从节点,实现自动主备切换Sentinel机制实现了Redis高可用,当主节点故障时能够自动并迅速地将从节点提升为主节点,确保业务连续性。这也是生产环境中推荐的高可用解决方案。

所以,要实现Redis主从节点的自动主备切换,有两种方式:

  1. 配置从节点的slave-serve-stale-data为yes,简单但手动主备切换
  2. 使用Sentinel架构,实现自动主备切换和高可用 Sentinel方案更加智能化,能够自动监控和处理主从节点的上下线,是生产环境首推的选择。但slave-serve-stale-data也为我们提供了一个简易的主备切换思路,在实验环境中也值得尝试。

四. 查看主从关系

[root@localhost ~]# redis-cli -p 6379 -a 123456 
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6382,state=online,offset=2128,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=2128,lag=0
slave2:ip=127.0.0.1,port=6380,state=online,offset=2128,lag=0
master_failover_state:no-failover
master_replid:ef8fa1c27460b44fe1b8a54653f4fa8b1de9201a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2128
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2128
127.0.0.1:6379> 

相关文章:

Redis(08)主从复制master-slave replication

文章目录 redis主从复制一. 配置文件的方式设置1. 主节点配置:2. 从节点1配置:3. 从节点2配置: 二. 命令的方式设置1. 创建服务2. 设置主从节点3. 测试 三. 从节点升级为主节点四. 查看主从关系 redis主从复制 Redis主从复制是将一个Redis实例的数据复制到多个Redis实例&#…...

被chatGPT割了一块钱韭菜

大家好&#xff0c;才是真的好。 chatGPT热度一直上升&#xff0c;让我萌生了一个胆大而创新的想法&#xff0c; 把chatGPT嵌入到Notes客户机中来玩。 考虑到我已经下载了一个chatGPT的Notes应用&#xff08;请见《ChatGPT APIs for HCL DOMINO》&#xff09;&#xff0c;想着…...

vue3+ts+pinia+vite一次性全搞懂

vue3tspiniavite项目 一&#xff1a;新建一个vue3ts的项目二&#xff1a;安装一些依赖三&#xff1a;pinia介绍、安装、使用介绍pinia页面使用pinia修改pinia中的值 四&#xff1a;typescript的使用类型初识枚举 一&#xff1a;新建一个vue3ts的项目 前提是所处vue环境为vue3&…...

Apache安装与基本配置

1. 下载apache 地址&#xff1a;www.apache.org/download.cgi&#xff0c;选择“files for microsoft windows”→点击”ApacheHaus”→点击”Apache2.4 VC17”&#xff0c;选择x64/x86&#xff0c;点击右边download下面的图标。 2. 安装apache &#xff08;1&#xff09;把…...

哈夫曼树【北邮机试】

一、哈夫曼树 机试考察的最多的就是WPL&#xff0c;是围绕其变式展开考察。 哈夫曼树的构建是不断选取集合中最小的两个根节点进行合并&#xff0c;而且在合并过程中排序也会发生变化&#xff0c;因此最好使用优先队列来维护单调性&#xff0c;方便排序和合并。 核心代码如下…...

thinkphp:数值(保留小数点后N位,四舍五入,左侧补零,格式化货币,取整,生成随机数,数字与字母进行转换)

一、保留小数点后N位/类似四舍五入&#xff08;以保留小数点后三位为准&#xff09; number_format()函数&#xff1a;第一个参数为要格式化的数字&#xff0c;第二个参数为保留的小数位数 方法一&#xff1a; public function test() {$num 12.56789; // 待格式化的数字$r…...

用Flutter你得了解的七个问题

Flutter是Google推出的一款用于构建高性能、高保真度移动应用程序、Web和桌面应用程序的开源UI工具包。Flutter使用自己的渲染引擎绘制UI&#xff0c;为用户提供更快的性能和更好的体验。 Flutter使用Dart语言&#xff0c;具有强大的类型、效率和易学能力&#xff0c;基本上你…...

Nmap使用手册

Nmap语法 -A 全面扫描/综合扫描 nmap-A 127.0.0.1 扫描指定网段 nmap 127.0.0.1 nmap 127.0.0.1/24Nmap 主机发现 -sP ping扫描 nmap -sP 127.0.0.1-P0 无ping扫描备注&#xff1a;【协议1,协设2〕【目标】扫描 nmap -P0 127.0.0.1如果想知道是如何判断目标主机是否存在可…...

基于ResNet-attention的负荷预测

一、attention机制 注意力模型最近几年在深度学习各个领域被广泛使用&#xff0c;无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中&#xff0c;都很容易遇到注意力模型的身影。从注意力模型的命名方式看&#xff0c;很明显其借鉴了人类的注意力机制。我们来看…...

华为校招机试 - 批量初始化次数(20230426)

题目描述 某部门在开发一个代码分析工具,需要分析模块之间的依赖关系,用来确定模块的初始化顺序是否有循环依赖等问题。 "批量初始化”是指一次可以初始化一个或多个模块。 例如模块1依赖模块2,模块3也依赖模块2,但模块1和3没有依赖关系,则必须先"批量初始化”…...

WhatsApp CRM:通过 CRM WhatsApp 集成向客户发送消息

WhatsApp CRM&#xff1a;通过 CRM WhatsApp 集成向客户发送消息 你是否在寻找一个支持WhatsApp整合的CRM&#xff1f;或者&#xff0c;你想将WhatsApp与你当前的CRM整合&#xff1f;这篇文章将回答你所有的问题。我们将首先了解什么是WhatsApp CRM&#xff0c;以及你需要知道…...

SOLIDWORKS Electrical无缝集成电气和机械设计

集成电气系统设计SOLIDWORKS⑧Electrical 解决方案借助专为工程专业设计的特定工具简化了电气铲品设计&#xff0c;并借助直观的用户界面更快地设计嵌入式电气系统。 与SOLIDWORKS 3DCAD的原生集成能提供更好的协作与生产效率&#xff0c;同时减少产品延迟、提高设计的一致性与…...

Numpy从入门到精通——数组变形|合并数组

这个专栏名为《Numpy从入门到精通》&#xff0c;顾名思义&#xff0c;是记录自己学习numpy的学习过程&#xff0c;也方便自己之后复盘&#xff01;为深度学习的进一步学习奠定基础&#xff01;希望能给大家带来帮助&#xff0c;爱睡觉的咋祝您生活愉快&#xff01; 这一篇介绍《…...

DJ4-5 路由算法:LS 和 DV

目录 一、迪杰斯特拉算法 1. 术语定义 2. 算法描述 3. 举例说明 4. 构建从源节点到目的节点的路径 5. 构建最低费用路径树 6. 构建转发表 二、距离向量路由算法 1. 术语定义 2. 举例说明 3. 距离向量表 4. 更新距离向量表 5. 举例说明 三、距离向量路由算法 PLUS…...

python图像处理之形态学梯度、礼帽、黑帽

文章目录 简介实战 简介 腐蚀和膨胀是图像形态学处理的基本运算&#xff0c;这两种运算的复合运算构成了开和闭&#xff0c;而腐蚀、膨胀与原图之间的加减操作&#xff0c;则构成了形态学梯度、礼帽和黑帽计算。 由于这几种函数均基于腐蚀和膨胀&#xff0c;所以其参数均与开…...

千万级直播系统后端架构设计

1、架构方面 1.1 基本 该图是某大型在线演唱会的直播媒体架构简图。 可以看出一场大型活动直播涵盖的技术方案点非常庞杂&#xff0c;本节接下来的内容我们将以推拉流链路、全局智能调度、流量精准调度以及单元化部署&#xff0c;对这套直播方案做一个展开介绍。 1.2 推拉流链…...

ImageJ 用户手册——第五部分(菜单命令File,Edit)

这里写目录标题 菜单命令26. File26.1 New26.1.1 Image26.1.2 Hyperstack26.1.3 Text Window26.1.4 Internal Clipboard26.1.5 System Clipboard 26.2 Open26.3 Open Next26.4 Open Samples26.5 Open Recent26.6 Import26.6.1 Image Sequence26.6.2 Raw26.6.3 LUT26.6.4 Text I…...

nmap常用命令

一、nmap简介 Nmap&#xff0c;也就是Network Mapper。nmap是一个网络连接端扫描软件&#xff0c;用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端&#xff0c;并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一&…...

常用adb 命令

目录 一、常用简单的adb命令&#xff1a; 二、adb shell pm基本的命令&#xff1a; 三、adb shell am基本的命令&#xff1a; 四、关闭某项进程&#xff0c;以monkey为例&#xff1a; 五、最近12小时的资源情况&#xff1a; 六、录制屏幕命令&#xff1a; 七、截图命令&am…...

后端开发常犯的问题(Java版)

数据类型使用不当 ——钱相关的计算&#xff0c;数据类型必须用BigDecimal 1.很多开发在做金额计算时会使用double数据类型&#xff0c;自测一些常用场景认为double是满足需求的因而图省事直接使用此数据类型。使用double类型存在金额精度丢失的风险&#xff0c;涉及到钱的数据…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...