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

Redis基础3-主从复制

Redis主从复制

主从复制简介

主从复制是为了达成高可用

  • 为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服
    务器上,连接在一起,并保证数据是同步的。

  • 即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。

    请添加图片描述

  • 提供数据方:master

    主服务器,主节点,主库

​ 主客户端

  • 接收数据方:slave

​ 从服务器,从节点,从库

​ 从客户端

  • 需要解决的问题

​ 数据同步

  • 核心工作

​ master的数据复制到slave中
主从复制

  • 主从复制即将master中的数据即时、有效的复制到slave中

  • 一个master可以拥有多个slave,一个slave只对应一个master

  • 职责

​ master:

​ 写数据

​ 执行写操作时,将出现变化的数据自动同步到slave

​ 读数据(可忽略)

​ slave:

​ 读数据
​ 写数据(禁止)

主从复制的概念

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower) ; 数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。

默认情况下,每台Redis服务器都是主节点 ;

且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

主从复制的作用

  1. 读写分离:主节点写,从节点读,提高服务器的读写负载能力

  2. 数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

  3. 故障恢复︰当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复 ; 实际上是一种服务的冗余。

  4. 负载均衡︰在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载 ; 尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

  5. 高可用(集群)基石︰除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

基本操作(一主二从)

请添加图片描述

  1. 开启: daemonize yes
  2. 注释:bind 127.0.0.1
  3. 关闭:protected-mode no
  4. 指定端口: port 6379
  5. 指定当前工作目录: dir /myredis
  6. PID文件名默认: pidfile
  7. log文件名:logfile “/myredis/6379.log”
  8. requirepass密码
  9. dbfilename dump.rdb名字
  10. aof文件,appendfilename
  11. 从机
    请添加图片描述
    请添加图片描述
  • 从机不能写入数据

请添加图片描述

  • 预设的从机改换主机

    SLAVEOF ip port 
    
  • 从机脱离主机

    SLAVEOF no one
    

复制原理和工作流程

  1. slve启动,同步初请

    • slave启动成功连接到master后会发送一个sync命令
    • slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除
  2. 首次连接,全量复制

    • master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),

      同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,

      master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步

    • 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

  3. 心跳持续,保持通信

    • 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
  4. 进入平稳,增量复制

    • 继续将新的所有收集到的修改命令自动依次传给
  5. 从机下线,重连续传

    • master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,

缺点

  1. 复制延时,信号衰减

    ​ 由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

  2. 主机挂掉,从机只能读取数据

  3. 数据不一致
    多个slave获取相同数据不同步
    ter上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

  4. 主机挂掉,从机只能读取数据

  5. 数据不一致
    多个slave获取相同数据不同步


http://www.kler.cn/a/506336.html

相关文章:

  • Unity-Mirror网络框架-从入门到精通之RigidbodyPhysics示例
  • YOLOv10-1.1部分代码阅读笔记-build.py
  • ubuntu20.04安装MySQL5.7
  • level(三) filterblock
  • 《机器学习》——DBSCAN算法
  • WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS
  • 得物App利用技术赋能,打造潮流消费“新玩法”
  • 全面了解 Web 前端技术:从基础到实践
  • JavaScript中的`void 0`:一个古老而安全的`undefined`获取方式
  • mac m4 安装 node
  • ResNet (Residual Network) - 残差网络:深度卷积神经网络的突破
  • Three.js+Vue3+Vite物体位移、缩放与旋转(二)
  • 【MySQL】使用C语言链接
  • R语言基础| 方差分析
  • 浅谈云计算11 | 虚拟机的主要功能
  • (RAG系列)FastGPT批量添加索引
  • WXML模版语法-事件绑定
  • 前端常见的设计模式之【单例模式】
  • 【机器学习:二十三、迁移学习】
  • 冯·诺依曼体系结构:计算机科学的奠基石
  • linux、华为modelarts、昇腾服务器、docker中,服务进程还在,但是不在运行状态,没有响应
  • 133、sqlserver查看哪个表被锁表了以及解锁方法
  • MIAOYUN信创云原生项目亮相西部“中试”生态对接活动
  • uniapp省市区懒加载封装
  • 【Linux】12.Linux进程概念(1)
  • products页面出现多选框后,能够直接将勾选的products删除吗?而不用跳转到flow再删除。例如将勾选的products传给flow