redis 主从复制搭建,全量复制和部分复制

3D Slicer隐藏技巧:这样玩转医学影像分割与3D建模(含DICOM处理) 本文深入探讨3D Slicer在医学影像分割与3D建模中的高级应用技巧,包括多模态分割策略、三维可视化优化及DICOM数据处理。通过专业配置和Python脚本示例,帮助医疗AI开发者和影像科医师提升工作效率,实现精准的医学图像分析与建模。 阅读详情

首先并不推荐手动创建redis主从,因为redis自带redis sentinel,可以使用redis sentinel来搭建主从架构,其中redis sentinel 内部实现了高可用,保证主节点或从节点挂掉可以保证服务继续!!!

优缺点

单机架构缺点
  • 机器故障,容量瓶颈,QTS瓶颈
主从复制优点
  • master ---- slave
  • 一主多从,读写分离,slave 可以还有slave

如何搭建

有两种方式一种是使用配置文件,一种是是用命令行模式,一种是配置文件形式,不管值命令行还是主从,只需要修改从节点的配置即可,主节点会自动同步从节点信息。

以一主一从为例:命令行模式(不需重启)

在这里插入图片描述

①只需要在从节点执行:
127.0.0.1:6380> slaveof 127.0.0.1 6379

②从节点查看主从信息
127.0.0.1:6380> info Replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:98
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:a53621985e6936091db69f9c0f404a2952e6e7b0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98

③主节点查看主从信息
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=219,lag=1
master_replid:a53621985e6936091db69f9c0f404a2952e6e7b0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:219
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:219

执行下面命令
127.0.0.1:6379> set a =1
OK
127.0.0.1:6380> get a
"=1"

在从节点执行赋值,报错 (和配置文件   slave-read-only yes 有关,一般情况下,从节点不写(为了保持数据一致性,应保持默认)
从节点读)
127.0.0.1:6380> set aa 2
(error) READONLY You can't write against a read only slave

修改配置文件

①只需修改从节点配置
slaveof 127.0.0.1 6379  --- 成为某个主节点的从节点,这里ip和port是所指向的master节点

知识点:

run_id 是redis每次启动时生成的随机的ID,用于标识该节点,重启会生成新的run_id,可以在redis-cli中执行 info命令查看
偏移量 用于主从同步、从节点上报从节点偏移量、master_repl_offset
主库和从库分别各自维护一个复制偏移量(可以使用info replication查看)用于标识自己复制的情况,在主库中代表主节点向从节点传递的字节数,在从库中代表从库同步的字节数。每当主库向从节点发送N个字节数据时,主节点的offset增加N,从库每收到主节点传来的N个字节数据时,从库的offset增加N。因此offset总是不断增大,这也是判断主从数据是否同步的标志,若主从的offset相同则表示数据同步量,不通则表示数据不同步
replication backlog buffer(复制积压缓冲区):复制积压缓冲区是一个固定长度的FIFO队列,大小由配置参数repl-backlog-size指定,默认大小1MB。需要注意的是该缓冲区由master维护并且有且只有一个,所有slave共享此缓冲区,其作用在于备份最近主库发送给从库的数据。在主从命令传播阶段,主节点除了将写命令发送给从节点外,还会发送一份到复制积压缓冲区,作为写命令的备份。除了存储最近的写命令,复制积压缓冲区中还存储了每个字节相应的复制偏移量(如下图),由于复制积压缓冲区固定大小先进先出的队列,所以它总是保存的是最近redis执行的命令。

主从偏移量如下图:
主从偏移量

  • 全量复制和部分复制(只讨论 2.8 <redis <4.0版本)
全量复制流程
如果从服务器以前没有复制过任何主服务器,或者之前执行过SLAVEOF no one命令,那么从服务器在开始一次新的复制时将向主服务器发送PSYNC ? -1命令,主动请求主服务器进行完整重同步(因为这时不可能执行部分重同步);
相反地,如果从服务器已经复制过某个主服务器,那么从服务器在开始一次新的复制时将向主服务器发送PSYNC <runid> <offset>命令:其中runid是上一次复制的主服务器的运行ID,而offset则是从服务器当前的复制偏移量,接收到这个命令的主服务器会通过这两个参数来判断应该对从服务器执行哪种同步操作,如何判断已经在介绍runid时进行详细说明。
根据情况,接收到PSYNC命令的主服务器会向从服务器返回以下三种回复的其中一种:

如果主服务器返回+FULLRESYNC <runid> <offset>回复,那么表示主服务器将与从服务器执行完整重同步操作:其中runid是这个主服务器的运行ID,从服务器会将这个ID保存起来,在下一次发送PSYNC命令时使用;而offset则是主服务器当前的复制偏移量,从服务器会将这个值作为自己的初始化偏移量;
如果主服务器返回+CONTINUE回复,那么表示主服务器将与从服务器执行部分同步操作,从服务器只要等着主服务器将自己缺少的那部分数据发送过来就可以了;
如果主服务器返回-ERR回复,那么表示主服务器的版本低于Redis 2.8,它识别不了PSYNC命令,从服务器将向主服务器发送SYNC命令,并与主服务器执行完整同步操作。
   
   由此可见psync也有不足之处,当从库重启以后runid发生变化,也就意味者从库还是会进行全量复制,而在实际的生产中进行从库的维护很多时候会进行重启,而正是有由于全量同步需要主库执行快照,以及数据传输会带不小的影响。因此在4.0版本,psync命令做了改进,以下说明。

redis2.8+ 全量复制流程
在这里插入图片描述

psync2 redis>4.0

redis4.0新版本除了增加混合持久化,还优化了psync(以下称psync2)并实现即使redis实例重启的情况下也能实现部分同步
以下常见的主从切换都可以使用部分复制:

  • 一主一从发生切换,A->B 切换变成 B->A ;
  • 一主多从发生切换,兄弟节点变成父子节点时;
  • 级别复制发生切换, A->B->C 切换变成 B->C->A;
全量复制开销~
  • bgsave时间
  • rdb文件传输时间
  • 从节点清空时间
  • 从节点加载rdb
  • 可能的AOF重写,加载rdb完成后,如果开启了aof重写,需要重写aof
部分复制
  • 如果网络发生抖动,2.8之前会重新生产rdb文件,然后重新执行
  • 之后,提供部分复制功能、如果抖动,master会在复制缓冲区生成一个buffer(默认1M),如果offset在buffer范围内,则会将部分数据复制到slave,而不需要全量复制

最后的注意事项:

  • 在上述的过程的实现是从库不开启AOF持久化情况下,如果从库开启的AOF持久化,重启时候依然使用全量复制。
  • 之前从master复制过来的数据并不会丢失,只是不再同步之前master(如上图的6379节点)后续写入的数据
  • slaveof 可以用来改变其所属的master节点,即重新成为另一台master的slave,但是新的master首先就会把从节点的数据全部清除掉
  • 关于读写分离延时: 读写分离 ,master会一步将数据复制到slave,如果slave发生阻塞,则会延迟master数据的写命令,造成数据不一致的问题。-------一般不考虑这个问题
  • 读到过期数据:redis在删除key时有两种策略,一种是懒惰型策略,即只有当redis操作这个key时才会将key删除,第二种是定期采样key删除--------当key数据非常多时,采样速度比不上key生成速度会造成很多过期数据没有删除,因为redis一般都是在master节点(增加删除数据),slave查询到过期数据也不能删除。会导致slave读到过期数据(在redis3.2中已经解决)

其他问题

  • 主从maxmemory配置不一致:导致主从数据不一致问题
  • 数据结构优化参数不一致(例如:hash-max-zip-entries):导致使用内存不一致
  • 从节点升级为主节点时会发生问题

规避全量复制优化

  • 第一次复制,无法避免~小主节点,低峰(晚上来复制)
  • 节点运行ID不匹配,主节点重启,runid会变(redis <4.0 会发生全量复制) 采用redis4.0+
  • 复制挤压缓冲区不足~增大复制缓冲区配置。修改配置文件redis.conf中的 # repl-backlog-size 1mb 默认为1M

规避复制风暴

  • 单机器复制风暴(redis<4.0当master宕机重启,会导致该机器下所有slave同时产生复制。避免单机部署一套redis主从)====》主节点分散多台机
提示词驱动的多智能体协作系统 《提示词驱动的多智能体协作系统》 关键词:人工智能、多智能体系统、协作机制、提示词驱动、系统设计与应用 摘要:本文深入探讨提示词驱动的多智能体协作系统,首先介绍其背景和核心概念,然后详细分析多智能体系统的基本原理和提示词驱动的协作机制,最 阅读详情

相关推荐

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

u012831187的博客 1万+

redis的主从复制(全量复制、部分复制)

redis的主从复制 redis主从复制指将一台redis服务器的数据复制到其他redis服务器,前者称为主节点(master),后者称为从节点(salve),数据的复制是单向的,只能从主节点到从节点默认情况下,每台redis服务器都是主节点,添加从节点配置后才会变成从节点,一个主节点可以有多个从节点,一个从节点只能有一个主节点。 从节点配置:在redis.conf文件中,添加配置 slaveof 主节点IP 主节点port 主从复制除了实现数据同步复制外,还实现了数据的读写分离,主节点负责写,从节点负责

qq_36816062的博客 601

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8279

Redis主从复制的搭建

Redis是一个高性能的缓存中间件,一个Redis服务器可以支撑很多的并发请求。但是在一些超高的并发场景下,虽然Redis读写速度很快,但也会产生读写压力过大,服务器负载过高的情况。为了分担读写的压力和减轻服务器的负担,可以搭建Redis主从架构。主服务器可以进行读写,从服务器只对外提供读的功能。从服务器的数据是由主服务器同步过来。 .........

qq_56370103的博客 1214

基于STM32的频率计(采用外部中断的方式)

前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方

qq_45784922的博客 6171

Redis(主从复制搭建)

【代码】Redis(主从复制搭建)

Sun的个人博客 2954

【汽车故障诊断2】从标准到实战:解码DTC格式背后的诊断逻辑

本文深入解析汽车诊断故障码(DTC)的格式与逻辑,对比了OBD-II标准(如ISO 15031-6)的5字符格式与UDS协议(ISO 14229-1)下更丰富的3字节格式。文章从国际标准出发,结合实战案例,阐述了DTC如何作为汽车电子系统的“体检报告”,帮助工程师和维修技师精准定位故障,并详细解读了UDS 19服务如何读取和管理DTC状态。

berry的博客 709

Redis实战篇——搭建主从复制

单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。

祝你身体健康,美满幸福 2061

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7720

手把手教你学Simulink--基于高频与高速信号处理的滤波器场景实例:毫米波雷达中匹配滤波器的多目标分辨仿真

在自动驾驶、智能交通和工业感知等领域,毫米波雷达(mmWave Radar)因其高分辨率全天候工作和抗电磁干扰能力,成为关键的感知传感器。其核心信号处理算法之一是匹配滤波器(Matched Filter),用于在强噪声背景下最大化信噪比(SNR),实现对微弱目标的检测。在调频连续波(FMCW, Frequency-Modulated Continuous Wave)雷达中,发射信号为线性调频(Chirp)信号。当信号遇到多个目标时,回波是多个延迟版本的叠加。

MHD0815的博客 134

Redis主从复制(样例+详解)

将多台数据库服务器分为主节点和从节点,主节点数据更新后会根据配置和策略,自动同步到从节点上,从而保证主从节点中存有相同的数据。一个 master 节点可以有多个 slave 节点;slave 节点故障,读请求的处理性能下降;master 节点故障,写请求无法执行;当 master 发生故障,可手动将其中一台 slave 使用命令提升为 master,其它 slave 执行 slaveof 命令指向这个新的 master;主从复制模式的故障转移需要手动操作,要实现自动化处理,这就需要。

weixin_51293984的博客 1083

【DL经典回顾】距离度量大汇总(7-余弦距离(Cosine Distance))

余弦距离(Cosine Distance)衡量的是两个向量在方向上的差异性,而不是在大小上的差异。

悦学共鸣,温柔以待,汇聚光芒,共同成长 2576

Redis 主从复制

✘ 薪火相传:上一个 Slave 可以是下一个 Slave 的 Master,Slave 同样可以接收其他 Slaves 的连接和同步请求,那么该 Slave 作为了链条中下一个的 Master,可以有效减轻 Master 的写压力。由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重。✘ 反客为主:SLAVEOF NO ONE。

程序猿进阶 1638

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis主从复制集群的介绍及搭建

主从复制集群是一种常见的数据库集群架构,它包含一个主服务器和多个从服务器。主服务器负责处理写操作,所有的写操作会被复制到从服务器。从服务器主要用于处理读操作,分担读负载。通过这种方式,我们可以在多台服务器上读取相同的数据,提高读取性能,同时也可以防止数据丢失。

栗筝i的博客 3764

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Redis主从复制架构搭建

Redis虽然拥有非常高的性能,但是在实际的生产环境中,使用单机模式还是会产生不少问题的,比如说容易出现单机故障,容量瓶颈,以及QPS瓶颈等问题。1.由于所有的写操作都是先在主机上操作,然后同步更新到从机上,所以同步过程有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重。可以看出这种情况下,当主机宕机后,后续的修复流程由人工操作,非常麻烦,因此在这种情况下Redis引入了哨兵模式,来完成主机宕机后的自动故障转移。2.当主机宕机之后,将不能进行写操作,需要手动将从机升级为主机,从机需要重新指定主机。

m0_50180963的博客 554

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Redis指南【6】一文搞定主从复制

在上篇文章中,我们深入学习了 Redis 的两种不同的持久化方式,Redis 服务器通过持久化,把 Redis 内存持久化到硬盘中,当 Redis 宕机后,可以对 RDB 或 AOF 文件恢复内存中的数据。但是如果这台服务器的主机坏了,那么这些数据就丢失了吗?下面,我们来学习下主从复制机制,它可以将主机的数据复制到多台服务器上,从而保证了数据的安全性。那么 Redis 的主从复制它具体都有哪些功能呢?如何配置的主从集群呢?它的底层是如何实现的呢?

mifffy_java的博客 1069

redis 03:Redis之主从复制,哨兵模式

Redis 支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。 关于 Redis 复制功能的几个重要方面: Redis 使用异步复制。 从 Redis 2.8 开始, 从服务器会以每秒一次的频率向主服务器报告复制流(replication stream...

严老板的技术梦想博客 1万+

09.Redis主从复制

创建conf,data两个文件夹 复制一份redis.conf文件到config文件夹 cp redis.conf ./config/redis6380.conf 修改相关配置如下 port 6380 pidfile /var/run/redis_6380.pid logfile "6380.log" dir /usr/local/redis-4.0.2/data/6380 #配置主从复制 从本机6379的redis实例复制数据 replicaof 192.168.20.135 6379 #从re.

lglglglglgui的博客 499

Redis——主从复制

文章目录Redis主从复制原理Redis 复制功能是如何工作的实现主从复制实验环境安装redis Redis主从复制原理 在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并...

weixin_38044888的博客 490

Redis主从复制/哨兵/集群解析

一、Redis主从复制 Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AOF文件恢复内存中的数据。 不过持久化后的数据仍然只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法可以保证服务器发生故障时数据的安全性?或者可以快速恢复数据呢?想做到这一点,我们需要再了解Redis另外一种机制:主从复制。 什么是主从复制 Redis的主从复制机制是指可以让从服

weixin_38910645的博客 486

【Redis】redis主从复制

下面回顾一下本文的主要内容:1、主从复制的作用:宏观的了解主从复制是为了解决什么样的问题,即数据冗余、故障恢复、读负载均衡等。2、主从复制的操作:即slaveof命令。3、主从复制的原理:主从复制包括了连接建立阶段、数据同步阶段、命令传播阶段;其中数据同步阶段,有全量复制和部分复制两种数据同步方式;命令传播阶段,主从节点之间有PING和REPLCONF ACK命令互相进行心跳检测。

margu_168的博客 1312

【Redis系列】主从复制

✨✅ 文章配套代码:每篇技术文章都提供完整的可运行代码示例✅ 持续更新:专栏内容定期更新,紧跟技术趋势✅ 答疑交流:欢迎在文章评论区留言讨论,我会及时回复(支持互粉)

optimistic_chen的博客 1462

零基础新手小白快速了解掌握服务集群与自动化运维(十五)Redis模块-Redis主从复制

本文介绍了Redis主从复制的原理、配置与部署。Redis主从复制通过数据副本实现高可用,支持一主一从、一主多从和树状结构三种拓扑。复制流程包括连接建立、权限验证、数据同步等步骤,支持全量复制和部分复制两种方式。文章详细讲解了psync命令的工作原理,以及心跳检测、异步复制等机制。同时提供了完整的Redis主从环境部署案例,包括master和slave节点的配置步骤、参数调优建议以及功能验证方法。通过合理配置主从复制,可以有效提升Redis系统的可靠性和性能。

uname_xuan的博客 954

从其他项目中复制过来的mapper加载不进bean_Redis主从复制架构搭建

Redis虽然拥有非常高的性能,但是在实际的生产环境中,使用单机模式还是会产生不少问题的,比如说容易出现单机故障,容量瓶颈,以及QPS瓶颈等问题。通常环境下,主从复制、哨兵模式、Redis Cluster是3种比较常见的解决方案,本文将通过实例演示如何搭建Redis主从复制环境,并对其原理进行分析。一、搭建主从复制架构1、创建3个目录redis8000,redis8001,redis80...

weixin_39631755的博客 169

Redis主从复制

Redis主从复制

Dear_xq 的博客 1129
上一篇: find -atime,-mtime,-ctime
下一篇: redis sentinel搭建以及基础知识介绍
o王o
博客等级 码龄13年 32粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值