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

Redis_主从复制

8. 主从复制

8.1 简介

主从库采用读写分离的方式

  • 读操作:主库、从库都可以处理
  • 写操作:首先写到主库执行,然后再将主库同步给从库。

实现读写分离,性能扩展
容灾快速恢复
在这里插入图片描述

8.2 主从复制步骤

  1. 创建一个目录 ,在root下创建一个myredis的目录
    mkdir myredis//创建目录
    cd myredis //进行目录
    cp /opt/reids-6.2.6/redis.conf redis_1.conf //cp 源文件 目标文件
    ls
    
  2. 关闭aof
  3. 使用vi编辑三个conf文件,redis_6379.conf,redis_6380.conf,redis_6381.conf做为一主二从配置,配置文件内容如下所示:
    include redis_1.conf
    pidfile /var/run/reids_6379.pid
    port 6379
    dbfilename dump6379.rdb
    
  4. 分别启动三个服务
    [root@localhost myredis]# redis-server redis_6379.conf
    [root@localhost myredis]# redis-server redis_6380.conf
    [root@localhost myredis]# redis-server redis_6381.conf
    [root@localhost myredis]# ps -ef|grep redis
    root 7289 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6379
    root 7296 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6380
    root 7302 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6381
    root 7316 6663 0 17:35 pts/0 00:00:00 grep --color=auto redis
    
  5. 在三个客户端,模拟分别连接到不同服务器
    redis-cli -p 端口号
    redis-cli -p 6379
    redis-cli -p 6380
    redis-cli -p 6381
    
  6. 查看服务器状态
    info replication
    
  7. 在6380和6381上调用replicaof ,将其从属于6379(如果是三台服务器以上步骤可以跳过,直接配置从属服务器)
    replicaof 127.0.0.1 6379
    
  8. 在主库上可以写入数据,从库不能写入数据
  9. 主库和从库都可以读数据

8.3 服务器宕机演示

8.3.1 从服务器宕机

  • 6381上调用shutdown
  • 在主服务器上写入数据
  • 6381重新连上时,仍然可以接收到主服务器的数据

8.3.2 主服务器宕机

  • 6379服务器调用shutdown
  • 在从服务器上仍然可以读取数据
  • 从服务器显示主服务器的状态为down
  • 当主服务器重新启动,从服务器显示主服务器的状态是up

8.4 主从同步原理

在这里插入图片描述

第一阶段

  • 主从建立连接,协商同步。从库和主库建立连接,告诉主库即将进行同步操作。主库需要确认并回复,主从就可以开始进行同步处理了。
  • 从库向主库发送一个psync指令,包含两个参数。一个是主库的runID,另一个是复制进度offset。
    • runID是每个redis实例启动时生成的一个随机ID,唯一标识。第一次复制时,从库不知道主库的runid,所以设为一个"?"。
    • offset,-1表示第一次复制
  • 主库收到指令后,会发送给从库fullresync指令去响应,带着主库的runid,还有目前复制进度offset。
  • 从库会记录下这两个参数。fullresync表示全量复制。主库把所有内容都复制给从库

第二阶段

  • 主库将所有数据发送给从库进行同步。从库收到rdb文件后,在本地把原有的数据清除,同步从主库接收到的rdb文件 。
  • 如果在主库把数据跟从库同步的过程中,主库还有数据写入,为了保证主从数据的一致性,主库会在内
  • 存中给一块空间replication buffer,专门记录rdb文件生成后收到的所有写操作

第三阶段

  • 主库把第二阶段执行过程中新收到的操作,再发送给从库,从库再加载执行这些操作,就实
    现同步处理了。

8.5 主-从-从模式

采用主-从-从模式,将主库生成和传输rdb文件的压力,以级联方式分散到从库上。
在这里插入图片描述

8.6 网络连接异常情况

在redis2.8之前,如果网络异常,再次连接后,需要做全量复制
从redis2.8之后,采用增量复制方式。repl_backlog_buffer缓冲区。当主从网络断开后,主库把收到写
操作,写入replication buffer,同时,也写入到repl_backlog_buffer缓冲区.
这个缓冲区,是一个环形缓冲区,主库会记录自己写到的位置,从库会记录自己读到的位置。
在之前还是会识别一下环形缓冲区还能不能够提供完整的数据,如果不能就进行全量同步了
在这里插入图片描述

  • repl_backlog_size参数
    • 缓冲空间大小=主库写入速度 * 操作大小-主从库网络传输速度 * 操作大小
    • repl_backlog_size=缓冲空间大小*2
    • 2000 * 2-1000 * 2=2000 大约为2M 乘2 所以repl_backlog_size值为4M

相关文章:

Redis_主从复制

8. 主从复制 8.1 简介 主从库采用读写分离的方式 读操作:主库、从库都可以处理写操作:首先写到主库执行,然后再将主库同步给从库。 实现读写分离,性能扩展 容灾快速恢复 8.2 主从复制步骤 创建一个目录 ,在root下创建一个m…...

Postman 的 Pre-request Script 使用RSA加解密

文章目录 一、概述 一、概述 Postman内置的Js不支持进行RSA加解密,所以需要引入forgeJS来实现。在 Pre-request Script使用以下脚本: // ------ 导入RSA ------ if (!pm.globals.has("forgeJS")) {pm.sendRequest("https://raw.githubu…...

【Swagger】只需要3步搭建Swagger环境,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示

目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关,启动Swagger功能 4. 启动项目,查看效果 Swagger 的功能这里就不多说明了,相信大家都懂的,好奇多问一句,大家有知道其…...

pytest运行时参数说明,pytest详解,pytest.ini详解

一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点: 简单灵活,容易上手,支持参数化 2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试&#xf…...

Matplotlib绘图知识小结--Python数据分析学习

一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…...

mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)

以上四个事件都是与鼠标相关的事件,其中mouseenter和mouseover均是鼠标移入时触发的事件,但是使用mouseover的时候会触发冒泡事件,也就是,当父元素和子元素均绑定mouseover事件的时候,如果触发子元素的mouserover事件&…...

【论文阅读】基于深度学习的时序预测——Autoformer

系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数

AI学习目录汇总 1、什么是块? 在线性模型中,我们关注过单个神经元(单个神经网络的输入和输出); 在多层感知机中,我们关注过整层的神经元(前一层的输出作为后一层的输入); 如果将“多层感知机”视为一整体,称为“块”,可以将前一个块的输出作为后一个块的输入。 块…...

Flink之Task解析

Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…...

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…...

如何使用Kali Linux进行密码破解?

今天我们探讨Kali Linux的应用,重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务,Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动,旨在通过不同的方法和工具来破解密码…...

【Freertos基础教程】任务管理之基本使用

文章目录 前言一、freertos任务管理是什么?二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本fre…...

VMware安装BC-linux-eluer 21.10,配置网络

参考配置:https://hiworld.blog.csdn.net/article/details/121608950 /etc/sysconfig/network-scripts/ifcfg-ens33 配置内容如下: TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_…...

2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程

安装MSYS2 msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有:msys,cygwin,mingw 优势&…...

【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁

1、Redisson 介绍 Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。Redisson 在基于 NIO 的 Netty 框架上,充分的利用了 Redis 键值数据库提供的一系列优势,在 Java 实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的…...

宝藏级画图工具-drawio

今天推荐一款非常好用的免费开源画图工具drawio. Drawio即可以下载安装到本地,也可以在线编辑,在线编辑网址为 https://app.diagrams.net/。 本地版下载地址为https://github.com/jgraph/drawio-desktop/releases 1、支持各类图形 Drawio可以非常便捷…...

36_windows环境debug Nginx 源码-使用 VSCode 和WSL

文章目录 配置 WSL编译 NginxVSCode 安装插件launch.json配置 WSL sudo apt-get -y install gcc cmake sudo apt-get -y install pcre sudo apt-get -y install libpcre3 libpcre3-dev sudo apt-get...

海康威视iVMS综合安防系统任意文件上传(0Day)

漏洞描述 攻击者通过请求/svm/api/external/report接口任意上传文件,导致获取服务器webshell权限,同时可远程进行恶意代码执行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和…...

SOME/IP通信对数据包的大小有要求

SOME/IP通信对数据包的大小有要求,因为SOME/IP是基于UDP协议的,而UDP协议有一个最大传输单元(MTU)的限制,即每个数据包的大小不能超过MTU的值。 不同的网络环境下,MTU的值可能不同,一般在1500字节到9000字节之间。 如果SOME/IP数据包的大小超过了MTU的值,那么就需要进…...

苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除

苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...

计算机系统结构复习-名词解释2

1.定向&#xff1a;在某条指令产生计算结果之前&#xff0c;其他指令并不真正立即需要该计算结果&#xff0c;如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方&#xff0c;那么就可以避免停顿。 2.多级存储层次&#xff1a;由若干个采用不同实现技术的存储…...