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

Redis 主从同步 问题

前言


 相关系列

  • 《Redis & 目录》(持续更新)
  • 《Redis & 主从同步 & 源码》(学习过程/多有漏误/仅作参考/不再更新)
  • 《Redis & 主从同步 & 总结》(学习总结/最新最准/持续更新)
  • 《Redis & 主从同步 & 问题》(学习解答/持续更新)
     
     

什么是主从同步?


    主从同步是Redis用于提高数据可用/可靠性的数据复制机制。主从同步允许Redis实例将自身设置为其它Redis实例的从机,从而令主机的数据可以向从机进行同步。如此一来当主机因为各项原因而宕机且一时难以立即恢复时,从机便可以及时取代主机以对外提供服务,从而得以保证数据的可用/可靠性。此外主从同步还间接具备提升数据读/写性能的效果,因为只要将读/写指令分别引导至从/主机执行以实现读/写分离,那么原本该由主机一力承担的指令便可以分摊至多台Redis实例上并发执行,从而大幅提升读/写效率。
 
 

主从同步有哪些架构?它们的优/缺点分别是什么?


 一主多从

    一主多从架构的核心是令任意数量的从机都同步相同主机,是实际场景使用最为频繁的主从架构…该架构的优/缺点具体如下:

  • 同步效率高:所有的从机都直接由主机负责数据同步。
     
  • 主机负载高:当从机的数量较多时,用于实现数据同步的开销将对主机运行造成相当大的压力。
     

 级联

    级联架构在一主多从架构的基础上添加了等级概念,即其允许从机继续携带从机,而非所有的从机都直接向主机进行同步…该架构的优/缺点具体如下:

  • 主机负载小:主机并不需要负责所有数据同步,这在从机数量较多时可以大幅降低主机的运行压力。
     
  • 同步效率低:数据需要进行多级传导,因为上游从机已完成数据同步的情况下下游从机可能尚未开始同步;
  • 监控难度大:从机的宕机可能导致整个分支不可用,因此在引入哨兵的情况下,所有携带有从机的主/从机都应该被监控。
     
     

主从同步有几种同步方式?大致流程是什么样的?


    主从同步有“全量同步&增量同步”两种同步方式,前者通常(但不限于)在主/从机(启动/重启)首次建立长链接时使用;而后者在用于在网络分区/断线重连时延续之前中断的数据同步。

 全量同步

  • 从机向主机发送{SYNC/PSYNC}指令请求全量同步;
  • 主机接收到{SYNC/PSYNC}指令,并在判定为全量同步后返回全量同步回应。然后异步执行{SAVE}指令生成RDB快照文件,并在文件生成后将之发送至从机。而从RDB快照文件开始生成起,主机并发接收到的所有写指令都会被同步写入replication_buffer @ 复制缓冲区中,以备后续对从机进行持续性的指令同步;复制缓冲区的大小默认为1MB,当满溢时其会阻塞内存读写。此外如果全量同步是由{PSYNC}指令触发的,那么主机接收的“所有”写指令还会被同步写入replication_backlog_buffer @ 复制积压缓冲区中,用于为可能发生增量同步提供数据支持;
  • 从机接收全量同步回应,并准备接受RDB快照文件;
  • 从机接收到RDB快照文件,随后异步加载其中数据。该异步加载可能会阻塞主进程的内存读/写,因为在此期间主进程虽然允许执行其它的初始化行为,但在RDB快照文件正式完成加载前其实不允许接受/执行指令的,否则就会出现数据不一致问题;
  • 主机结束对RDB快照文件的发送,随后持续向从机发送复制缓冲指令以进行持续性的指令同步;
  • 从机持续接收并执行复制缓冲指令,从而实现对主机数据的同步。
     

 增量同步

  • 从机向主机发送{PSYNC}指令请求增量同步;
  • 主机接收{PSYNC}指令,在根据其携带的主机运行ID/从机偏移量确定可执行增量同步后返回增量同步回应。随后通过从机偏移量在复制积压缓冲区中定位最后同步指令的位置,并向从机发送尚未同步的复制加压缓冲指令以实现持续性的指令同步;
  • 从机接收增量同步回应,并准备接受复制积压缓冲指令;
  • 从机持续接收并执行复制加压缓冲指令,从而实现对主机数据的同步。
     
     

开启主从同步后还需要开启持久化吗?推荐的持久化方案又是什么呢?


    持久化机制即使是在已启动主从同步的情况下也是必须开启的,因为数据只有存入磁盘后才能彻底避免/减少丢失的情况发生。而单纯使用主从同步做数据热备是无法彻底做到这一点的,甚至主从同步本身还会成为数据丢失的原因。例如在没有开启持久化机制的情况下,如果主机宕机后又恢复运行,那么主从同步就会导致从机的热备数据因为主机数据的丢失而清空…因此持久化机制才是避免/减少数据丢失的最佳方案。

    在开启主从同步的情况下,主机更推荐同时开启RDB/AOF机制以保证数据尽可能的完整,毕竟其是数据的实际来源,而从机的持久化方案则需要根据实际情况来定。如果从机仅用于在主机宕机时暂用,那么通常是无需开启持久化或只需开启RDB持久化;而如果从机后会用于在主机宕机后作为新主机使用的,那么就推荐和主机一样同时开启RDB/AOF机制。

相关文章:

Redis 主从同步 问题

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 主从同步 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 主从同步 & 总结》(学习总结/最新最准/持续更新)《Redis &a…...

【SQL Server】探讨 IN 和 EXISTS之间的区别

前言 在使用 SQL 查询相关表数据时,通常需要根据另一个表中的值来筛选数据。而 IN 与 EXISTS 子句都是用于此场景的常用方式,但使用时两者存在工作方式不同。它们使用上的选择会显著影响查询的性能,尤其是在大型数据集中。本文我们一起探讨 IN 和 EXISTS 之间的区别、使用与…...

清理pip和conda缓存

当用户目录没有空间时,可清理pip和conda缓存 清理conda缓存: conda clean --all清理pip缓存: pip cache purgeNote: 可以利用软链接,将用户目录下的文件链接到其他位置 首先移动文件或文件夹到其他位置 mv ~/test /…...

git rebase和merge的区别

Git merge和Git rebase是两种不同的合并策略,它们在处理分支合并时有各自的优点和缺点。 Git fetch git fetch 命令用于从远程仓库获取最新的更改,但不会自动合并这些更改到你的本地分支。它会下载远程仓库的所有分支和标签,并更新你的本地…...

【elkb】linux麒麟v10安装ELKB 8.8.X版本(ARM架构)

下载软件 相关版本信息 elasticsearch:8.8.1kibana:8.8.1logstash:8.8.1filebeat:8.8.1 下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-aarch64.tar.gzhttps://artifacts.elastic…...

bluez hid host介绍,连接键盘/鼠标/手柄不是梦,安排

零. 前言 由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统…...

GPT打数模——电商品类货量预测及品类分仓规划

背景 电商企业在各区域的商品存储主要由多个仓库组成的仓群承担。其中存储的商品主要按照属性(品类、件型等)进行划分和打标,便于进行库存管理。图 1 是一个简化的示意图,商品品类各异,件数众多,必须将这些…...

华为OD机试 - 螺旋数字矩阵 - 矩阵(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)

分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB) 目录 分类预测 | GCN图卷积神经网络多特征分类预测(MATLAB)分类效果基本介绍程序设计参考资料分类效果 基本介绍 GCN图卷积神经网络多特征分类预测(MATLAB) 在图卷积神经网络(GCN)中,多特征分类...

FPGA搭建PCIE3.0通信架构简单读写测试,基于XDMA中断模式,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案本博客方案的PCIE2.0版本 3、PCIE基础知识4、工程详细设计方案工程设计原理框图XDMA配置及使用XDMA中断模块数据缓存架构用户逻辑Windows版本XDMA驱动安装Linux版本XDMA驱动安装测试应用程序工程源码架构PCIE上板…...

App相关技术以及打包

平时小伙伴们自己的博客网站只能在浏览器打开,但是有时候你想要制作自己独立个人博客app,宣传并推广自己的app,打造个人ip。如何把自己的web博客网站打包成安卓app? 1.开发App的相关技术使⽤ ⽬前市⾯上的移动互联开发技术主要分…...

【unity】【游戏开发】Unity代码不给提示怎么办?

【现象】 Unity用着用着忽然VS脚本不给提示了。 【分析】 重启Unity无效 重启VS无效 重装VS无效 感觉应该是项目设置问题 【最终方法】 打开Edit->Preferences。 如果是这个画面就把Script Editor改成自己的VS编辑器。 变成下面这个样子,点击Regenerate Pr…...

Kubernetes固定Pod IP和Mac地址

方案1: 在 Calico GitHub Issues#5196 问题的 commits#6249 提交中,引入新的 Pod 注释cni.projectcalico.org/hwAddr,用于将指定的 MAC 地址分配给容器端 Veth 接口。 将Calico升级至v3.24.1或以上版本,使用如下注解轻松设置Pod…...

计算机组成原理之数据的对齐和大/小端存放方式、计算机中数据对齐的具体方式有哪些

1、计算机组成原理之数据的对齐和大/小端存放方式 数据对齐 数据对齐是处理器为了提高处理性能而对存取数据的起始地址所提出的一种要求。 系统一次性读取内存中数据的大小是固定的,例如字长为32位的操作系统,默认的一次读取4字节内容。因此&#xff…...

【学术论文投稿】Windows11开发指南:打造卓越应用的必备攻略

【IEEE出版南方科技大学】第十一届电气工程与自动化国际会议(IFEEA 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 目录 引言 一、Windows11开发环境搭建 二、Windows11关键新特性 三、Windows11设计指南 …...

【毕业论文+源码】基于SSM(Spring + Spring MVC + MyBatis)的房屋租赁系统

创建一个基于SSM(Spring Spring MVC MyBatis)框架的房屋租赁系统是一个涉及多个步骤的过程。这个过程包括但不限于需求分析、数据库设计、前端界面设计以及后端逻辑实现等。 1. 需求分析 首先,明确你的房屋租赁系统的功能需求。例如&…...

【golang】解析 JSON到指定结构体

1.解析[1,2,3,4]数组类型的json package mainimport ("encoding/json""fmt" )func main() {// JSON 数据jsonData : [1, 2, 3, 4]// 定义一个切片来接收解析后的数据var numbers []int// 解析 JSON 数据到切片err : json.Unmarshal([]byte(jsonData), &am…...

设计模式——过滤器模式

一、定义和概念 定义 C 过滤器模式(Filter Pattern)也称为标准模式(Criteria Pattern),是一种设计模式,用于根据不同的标准或条件从一组对象中筛选出符合条件的对象。它将筛选条件的逻辑封装在不同的过滤器…...

Unity(四十八):Unity与Web双向交互

效果 游戏对象绑定脚本 游戏脚本源码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Tent : MonoBehaviour {public Camera camera;// Start is called before the first frame updatevoid Start(){}// Update is called once…...

web前端--网页练习

html代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>小米</title><!-- 引…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...