Redis 主从复制 初步认识

news2024/11/19 23:18:46

文章目录

  • 定义
  • 拓扑
    • 拓扑定义
    • 单从拓扑
    • 多从拓扑
    • 树型拓扑
  • 使用
  • 原理
    • 建立流程
    • 持续复制

定义

Redis主从复制技术的主要满足的需求是①数据恢复②负载均衡
①数据恢复的理解:将数据同步到多个Redis服务器中,其中一个节点数据损毁,可通过复制其他节点数据恢复。
②负载均衡的理解:启动多个Redis服务器,它们数据相同,每个节点平均分配client-Redis发起的请求。

拓扑

(解释拓扑也说明在说明主从复制的必要性/作用)

拓扑定义

在计算机网络和系统架构中,拓扑(Topology)是指网络或系统组件之间的物理或逻辑连接方式。它描述了节点(如计算机、服务器、存储设备等)和链接(如电缆、无线连接等)之间的结构关系。拓扑结构对于数据如何在网络中流动、如何被路由以及系统的整体性能都有重要影响。

单从拓扑

⼀主⼀从结构是最简单的复制拓扑结构,⽤于主节点出现宕机时从节点提供故障转移⽀持,如图所⽰。当应⽤写命令并发量较⾼且需要持久化时,可以只在从节点上开启 AOF,这样既可以保证数据安全性同时也避免了持久化对主节点的性能⼲扰。但需要注意的是,当主节点关闭持久化功能时,如果主节点宕机要避免⾃动重启操作(如果主节点在关闭持久化功能后宕机,但在宕机前未能将所有数据同步到从节点,那么在主节点重启后,这部分未同步的数据可能会丢失)。
在这里插入图片描述

多从拓扑

对于读⽐重较⼤的场景,可以把读命令负载均衡到不同的从节点上来分担压⼒。同时⼀些耗时的读命令可以指定⼀台专⻔的从节点执⾏,避免破坏整体的稳定性。对于写并发量较⾼的场景,(缺点/注意)多个从节点会导致主节点写命令的多次发送从⽽加重主节点的负载

在这里插入图片描述

树型拓扑

树形主从结构(分层结构)使得从节点不但可以复制主节点数据,同时可以作为其他从节点的主节点继续向下层复制。通过引⼊复制中间层,可以有效降低住系欸按负载和需要传送给从节点的数据量.

例如下图:数据写⼊节点 A 之后会同步给 B 和 C 节点,C节点进⼀步把数据同步给 D 和 E 节点。当主节点需要挂载等多个从节点时为了避免对主节点的性能⼲扰,可以采⽤这种拓扑结构。
在这里插入图片描述

使用

配置原则:
① 每个从结点只能有⼀个主节点,而一个主节点可以同时具有多个从结点
②复制的数据流是单向的,只能由主节点到从节点

1. 建立主从复制具体方法:
①在redis.conf配置文件中,设置

# redis.conf 配置文件
slaveof <masterip> <masterport> 
# masterip   主节点IP
# masterport 主节点端口

② 在 redis-server 启动命令时加输入以下指令

在 redis-server 启动命令时加⼊ --slaveof {masterHost} {masterPort}

③ 接使⽤ redis 命令:

slaveof {masterHost} {masterPort}

2. 断开主从复制具体方法

在从节点执⾏ slaveof no one 来断开与主节点复制关系。

slaveof no one

3. 切换主从复制具体方法
将当前从节点的数据源切换到另⼀个主节点。执⾏slaveof {newMasterIp} {newMasterPort} 命令即可。

slaveof {newMasterIp} {newMasterPort}

4. 设置主从复制密码的具体方法:

主从复制必然有安全验证手段,否则会被盗取信息。Redis主从复制手段安全保障手段是通过设置连接密码来实现的。

主节点配置(redis.conf文件):

#设置密码验证
requirepass your_password

从节点配置(redis.conf文件):

# 设置主节点的IP和端口
replicaof <masterip> <masterport>
# 设置主节点的密码
masterauth your_password

5. 设置从节点为只读的具体方法:

在实际的生产应用环境中,读数据的频率往往比写(增删改)数据的频率要高,因此有读模式的需求。将从节点设置为只读模式后,从节点的任何修改主节点都⽆法感知,修改从节点会造成主从数据不⼀致。所以将从节点设置为只读模式后,不建议”写“从节点内容。

# 在redis.conf配置文件中
slave-read-only yes

原理

建立流程

(这部份建立流程指的是执行slaveof指令后第一次同步的具体流程)
①保存信息:从节点保存主节点信息(例如主节点的端口、IP信息)
②建立连接:从节点内部通过每秒运⾏的定时任务维护复制相关逻辑,当定时任务发现存在新的主节点后,会尝试与主节点建⽴基于 TCP 的⽹络连接。如果从节点⽆法建⽴连接,定时任务会⽆限重试直到连接成功或者⽤⼾停⽌主从复制。
③验证连接:连接建⽴成功之后,从节点通过 ping 命令确认主节点在应⽤层上是⼯作良好的。如果 ping 命令的结果 pong 回复超时,从节点会断开 TCP 连接,等待定时任务下次重新建⽴连接。
④权限验证:如果主节点设置了 requirepass 参数,则需要密码验证,从节点通过配置 masterauth参数来设置密码。如果验证失败,则从节点的复制将会停⽌。
⑤首次复制:对于⾸次建⽴复制的场景,主节点会把当前持有的所有数据全部发送给从节点,这步操作基本是耗时最⻓的,所以⼜划分称两种情况:全量同步和部分同步(全量复制与复制后面会作解释)。
⑥持续复制:当从节点复制了主节点的所有数据之后,针对之后的修改命令,主节点会持续的把命令发送给从节点,从节点执⾏修改命令,保证主从数据的⼀致性。(持续复制的具体说明见下一部分)

持续复制

SLAVEOF 和 PSYNC指令

Redis 使⽤ psync 命令完成主从数据同步,注意:SLAVEOF指令用于建立主从关系,即将一个Redis实例设置为另一个Redis实例的从节点,从而进行完整的数据复制。PSYNC指令则是在从节点与主节点失去连接并重新连接时,用于请求数据同步或部分数据同步,以便在部分数据丢失或断线重连的情况下保持数据的一致性。

#  PSYNC指令的具体使用
redis-cli -h <slave_host> -p <slave_port>
PSYNC <replicationid> <offset>
#如果 replicationid 设为 ? 并且 
#offset 设为 -1 此时就是在尝试进⾏全量复制.
#如果 replicationid offset 
#设为了具体的数值, 则是尝试进⾏部分复制

复制策略分类:

全量复制:⼀般⽤于初次复制场景,Redis 早期⽀持的复制功能只有全量复制,它会把主节点全部数据⼀次性发送给从节点,当数据量较⼤时,会对主从节点和⽹络造成很⼤的开销。

部分复制:⽤于处理在主从复制中因⽹络闪断等原因造成的数据丢失场景,当从节点再次连上主节点后,如果条件允许,主节点会补发数据给从节点。因为补发的数据远⼩于全量数据,可以有效避免全量复制的过⾼开销。

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

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

相关文章

Python | Leetcode Python题解之第77题组合

题目&#xff1a; 题解&#xff1a; class Solution:def combine(self, n: int, k: int) -> List[List[int]]:ans []path []def dfs(x):remain k - len(path)if not remain:ans.append(list(path))returnif n 1 - x > remain:dfs(x 1)path.append(x)dfs(x 1)path.…

【进程间通信】共享内存

文章目录 共享内存常用的接口指令利用命名管道实现同步机制总结 System V的IPC资源的生命周期都是随内核的。 共享内存 共享内存也是为了进程间进行通信的&#xff0c;因为进程间具有独立性&#xff0c;通信的本质是两个不同的进程看到同一份公共资源&#xff0c;所以共享内存…

MVC 过滤器

MVC 过滤器常用有4种 Action过滤器&#xff08;IActionFilter&#xff09; 》 行为过滤器Result过滤器 &#xff08;IResultFilter&#xff09;》 视图过滤器 或 结果过滤器Exception过滤器&#xff08;IExceptionFilter&#xff09;》 异常过滤器Authorization过滤器&#xf…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令&#xff0c;形式如下&#xff1a; # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

运用分支结构与循环结构写一个猜拳小游戏

下面我们运用平常所学的知识来写一个小游戏&#xff0c;这样能够加强我们学习的趣味性&#xff0c;并且能够更加的巩固我们所学的知识。 游戏代码&#xff1a; 直接放代码&#xff1a;&#xff08;手势可以使用数字来代替&#xff0c;比如0对应石头&#xff0c;1对应剪刀&…

APB总线协议

一、概述 高级外围设备总线&#xff08;APB&#xff09;是高级微控制器总线架构&#xff08;AMBA&#xff09;总线层次结构的一部分&#xff0c;并为最小的功耗和降低接口复杂性进行了优化。AMBA APB应用于连接到任何低带宽且不需要流水线总线接口的高性能的外设。 二、APB总…

【氮化镓】GaN功率器件在转换器设计中的挑战

I. 引言(INTRODUCTION) 宽带隙(WBG)器件的重要性: 引言部分首先强调了宽带隙(WBG)器件在高频、高效率电力电子技术中的关键作用。这些器件,包括碳化硅(SiC)和氮化镓(GaN),相较于传统的硅功率器件,具有显著的优势。宽带隙半导体材料的高击穿场强允许设计更薄的漂…

linux Shell编程之条件语句

条件测试操作 test命令 条件测试操作 Shell环境根据命令执行后的返回状态值&#xff08;$?&#xff09;来判断是否执行成功&#xff0c;当返回值为0&#xff08;真true&#xff09;时表示成功&#xff0c;返回值为非0值&#xff08;假false&#xff09;时表示失败或异常。 t…

nginx--系统参数优化telenct

系统参数 在生产环境中&#xff0c;根据自己的需求在/etc/sysctl.conf来更改内核参数 net.ipv4.ip_nonlocal_bind 1 允许非本地IP地址socket监听 net.ipv4.ip_forward 1 开启IPv4转发 net.ipv4.tcp_timestamps 0 是否开启数据包时间戳 net.ipv4.tcp_tw_reuse 0 端⼝口复⽤…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期&#xff0c;全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示&#xff0c;据文化和旅游部数据中心测算&#xff0c;全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%&#xff0c;而酒店作为一个高…

华为数据之道第三部分导读

目录 导读 第三部分 第7章 打造“数字孪生”的数据全量感知能力 “全量、无接触”的数据感知能力框架 数据感知能力的需求起源&#xff1a;数字孪生 数据感知能力架构 基于物理世界的“硬感知”能力 “硬感知”能力的分类 “硬感知”能力在华为的实践 基于数字世界的…

Apache SeaTunnel 4月回顾:明星贡献者与技术突破

各位热爱 SeaTunnel 的小伙伴们&#xff0c;SeaTunnel 社区 4 月份月报来啦&#xff01;这里将记录 SeaTunnel 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度 Merge 之星 感谢以下小伙伴 4 月为 Apache SeaTunnel 做的精彩贡献&#xff08;排名不分先后&#xff…

快速话术本(常用文本快速复制工具)EXE成品+软件源码

功能介绍 经常性需要重复性的输入几个不同的文本&#xff0c;来回复制很麻烦&#xff0c;这个小工具可以帮你解决&#xff0c;把要经常输入的文本添加进去&#xff0c;点击即可复制~ 链接&#xff1a;https://pan.baidu.com/s/14-U_9uzkvpCrpzBkQaDZeA?pwdu7ot 提取码&#…

详细介绍一下PointPillars算法的网络结构

PointPillars是一种用于3D目标检测的算法&#xff0c;它主要使用了点云数据和深度学习模型。 PointPillars算法的网络结构主要可以分为三个主要阶段&#xff1a; Pillar Feature Net&#xff08;点云特征处理网络&#xff09;&#xff1a;此阶段的主要任务是将输入的点云数据转…

排序算法(Java版)

目录 1、直接插入排序2、希尔排序3、直接选择排序4、堆排序5、冒泡排序6、快速排序6.1 递归实现6.2 非递归实现 7、归并排序7.1 递归实现7.2 非递归实现 8、性能分析 今天我们学习一种算法&#xff1a;排序算法&#xff08;本文的排序默认是从小到大顺序&#xff09;&#xff0…

【mysql篇】执行delete删除大量数据后,磁盘未清空,为什么?

目录 迁移脚本删除数据以及备份数据 解决方法OPTIMIZE TABLE二进制日志按月生成数据 最近某个项目虽说用户量不大&#xff0c;但是&#xff0c;单表的数据量越来越大&#xff0c;mysql一般单表超过千万级别后&#xff0c;性能直线下降&#xff0c;所以利用shardingphere按月做了…

ISO14229 -1 UDS诊断服务记录-001:0x34\0x36\0x37\0x31\0x19\0x14服务报文格式介绍

目录 1、34服务-请求下载 1.1、诊断请求格式 1.2、正响应格式 1.3、负响应格式 1.4、工程应用分析 2、36服务-传输数据 2.1、请求报文格式 2.2、正响应格式 2.3、负响应NRC 3、37服务-退出传输 3.1、报文格式 3.2、正响应格式 3.3、负响应NRC 4、31服务-例程控制 …

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…

Ubuntu22.04下安装kafka_2.11-0.10.1.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1.将Kafka安装包移到下载目录中 2.下载Spark并确保hadoop用户对Spark目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1.启动Kafka 2.测试Kafka是否正常工作 一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro 虚…

电脑那些可以升级的基本配置

一. 中央处理器&#xff08;CPU&#xff09;&#xff1a;&#xff08;若不是焊点的可以升级&#xff09; 1、一句话简介&#xff1a; 这是电脑的心脏&#xff0c;决定了电脑的处理能力。常见的品牌有Intel和AMD。 2、换CPU指南&#xff1a; 1) 处理器品牌&#xff1a; - 主要…